<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
			<channel>
			<title>Два сайта с общими таблицами пользователей / Вопросы, проблемы и их решения / Alto CMS</title>
			<link>http://altocms.ru/comments/1439/</link>
			<description><![CDATA[Путём манипуляций с конфигами удалось частично решить вопрос по сабжу. Но толку от этого ноль, т.к. на double-сайте юзер не]]></description>
			<language>ru</language>
			<managingEditor>noreply@altocms.ru</managingEditor>
			<webMaster>noreply@altocms.ru</webMaster>
			<generator>Alto CMS v.1.5.0b1</generator>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24553)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24553</guid>
					<link>http://altocms.ru/1439.html#comment24553</link>
					<author>j.j.lefebvre@yandex.ru</author>
					<description><![CDATA[Я не понимаю смысла в этих манипуляциях. Нужна авторизация с двух сайтов по одной базе пользователей?<br/>
В этом случае более уместным было бы использование единого LDAP каталога с обоих сайтов. Плагин такой ранее существовал, незнаю подойдет ли он к текущей версии cms.]]></description>
					<pubDate>Mon, 09 Nov 2015 15:48:06 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24554)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24554</guid>
					<link>http://altocms.ru/1439.html#comment24554</link>
					<author>ieasyweb@myttk.ru</author>
					<description><![CDATA[LDAP не ушёл дальше недоработаной и предварительной версий, последние изменения 3 года назад…<br/>
кроме того, насколько я понял, он годится для сети поддоменов, а у меня второй сайт в подпапке + версии сайтов разные (в силу отсутствия обновлений нужных плагинов) + уже под пару сотен зарегистрированных пользователей…<br/>
но всё это не помешало бы мне попробовать LDAP, если с ним был внятный мануал для типичного пользователя плагинов, а не программиста]]></description>
					<pubDate>Mon, 09 Nov 2015 16:23:13 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24555)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24555</guid>
					<link>http://altocms.ru/1439.html#comment24555</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[А можете поподробней обрисовать задачу. Возможно у меня похожая, но решать думаю ее по-другому.]]></description>
					<pubDate>Mon, 09 Nov 2015 16:43:25 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24556)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24556</guid>
					<link>http://altocms.ru/1439.html#comment24556</link>
					<author>ieasyweb@myttk.ru</author>
					<description><![CDATA[одна БД на два сайта (с разными префиксами таблиц, за исключением юзеров и их настроек профиля)<br/>
иначе<br/>
два сайта с одной базой пользователей, но разным контентом<br/>
…<br/>
сейчас получилось только с пользователями, но, как видно, записать что-либо (создать блог или топик) юзер не может]]></description>
					<pubDate>Mon, 09 Nov 2015 17:37:20 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24557)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24557</guid>
					<link>http://altocms.ru/1439.html#comment24557</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[А какая именно ошибка возникает например при создании топика? Если общие у них только таблицы пользователей и сессий.]]></description>
					<pubDate>Mon, 09 Nov 2015 18:11:57 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24558)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24558</guid>
					<link>http://altocms.ru/1439.html#comment24558</link>
					<author>ieasyweb@myttk.ru</author>
					<description><![CDATA[например<br/>
<pre class="prettyprint"><code>SQL Error: Cannot add or update a child row: a foreign key constraint fails (`p325521_test`.`ter_topic_content`, CONSTRAINT `ter_topic_content_fk` FOREIGN KEY (`topic_id`) REFERENCES `ter_topic` (`topic_id`) ON DELETE CASCADE ON UPDATE CASCADE) at /...второй сайт/classes/modules/topic/mapper/Topic.mapper.class.php line 85</code></pre><br/>
<strong>ter</strong> — это префикс таблиц второго сайта, а юзеры берутся из основного и их префик, разумеется, другой<br/>
эта ошибка, кстати, была при попытке прочесть уже созданный админом топик, т.е. получается, что юзер как бы и не юзер…<br/>
остальные ошибки при создании блога/топика такие же, только на соответствующие мапперы ссылаются…<br/>
<br/>
при этом, в Новое светится +1, но при переходе — «сюда ещё никто не успел написать»]]></description>
					<pubDate>Mon, 09 Nov 2015 18:29:50 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24559)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24559</guid>
					<link>http://altocms.ru/1439.html#comment24559</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[Мда чувствую с этой схемой придется повозиться.<br/>
<br/>
1. Правильно я понимаю что вы создали такие же таблицы в той же схеме БД, но с другим префиксом?<br/>
2. Беглый поиск честно говоря заставляет сомневаться что вообще задание отдельных теблиц в конфиге будет работать. По крайней мере конструкцию Config::Get('db.table.user') я нашел только в плагине mailing.<br/>
3. Есть ощущение что придется руками менять эти внешние связи в таблицах второго сайта на таблицы первого.<br/>
<br/>
Возможно чуть позже я поэкспериментирую.]]></description>
					<pubDate>Mon, 09 Nov 2015 18:37:22 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24561)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24561</guid>
					<link>http://altocms.ru/1439.html#comment24561</link>
					<author>ieasyweb@myttk.ru</author>
					<description><![CDATA[1 — да.<br/>
2 — результат «клонирования» юзеров говорит об обратном))<br/>
3 — не совсем понял, что имеется в виду, но при изменении префиксов (в конфиге), например, у blog, на втором сайте появляется список блогов первого, что логично — это равносильно целиком общей БД для обоих сайтов]]></description>
					<pubDate>Mon, 09 Nov 2015 18:46:47 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24564)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24564</guid>
					<link>http://altocms.ru/1439.html#comment24564</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[В общем у меня все заработало.<br/>
<br/>
Нужно провести дебильную обезьянью работу и поменять старый FK на таблицы которые должны бы были дублироваться на таковые в исходных таблицах (которые собой их заменяют). Пройтись по всем таблицам второго сайта.<br/>
<br/>
<pre class="prettyprint"><code>ALTER TABLE `pefix2_blog` DROP FOREIGN KEY `prefix2_blog_fk` ,
ADD FOREIGN KEY ( `user_owner_id` ) REFERENCES `alto`.`prefix1_user` (
`user_id`
) ON DELETE CASCADE ON UPDATE CASCADE ;</code></pre><br/>
<br/>
В PMA это делается через «структуру» и дальше «связи».]]></description>
					<pubDate>Mon, 09 Nov 2015 20:58:36 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24574)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24574</guid>
					<link>http://altocms.ru/1439.html#comment24574</link>
					<author>ieasyweb@myttk.ru</author>
					<description><![CDATA[спасибо!]]></description>
					<pubDate>Tue, 10 Nov 2015 13:37:46 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24560)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24560</guid>
					<link>http://altocms.ru/1439.html#comment24560</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[Там еще префикс для кэша надо другой задать.<br/>
<br/>
Upd. Все-таки нашел в мапперах этот Get, так что возможно не все так плохо.]]></description>
					<pubDate>Mon, 09 Nov 2015 18:40:35 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24566)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24566</guid>
					<link>http://altocms.ru/1439.html#comment24566</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[Проблема в FOREIGN KEYS — внешних ключах. Нужно либо их обновлять, чтобы задать связи для таблиц с разными префиксами, либо удалить совсем. Второй вариант проще, но не тестировался совсем, хотя скоро и планируется отказаться от внешних ключей.]]></description>
					<pubDate>Mon, 09 Nov 2015 23:09:42 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24575)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24575</guid>
					<link>http://altocms.ru/1439.html#comment24575</link>
					<author>ieasyweb@myttk.ru</author>
					<description><![CDATA[отлично, спасибо, попробую как-раз потестить и этот вариант]]></description>
					<pubDate>Tue, 10 Nov 2015 13:38:17 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24576)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24576</guid>
					<link>http://altocms.ru/1439.html#comment24576</link>
					<author>anp135@gmail.com</author>
					<description><![CDATA[<blockquote>скоро и планируется отказаться от внешних ключей.</blockquote>турбо жесть -).]]></description>
					<pubDate>Tue, 10 Nov 2015 14:25:32 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24577)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24577</guid>
					<link>http://altocms.ru/1439.html#comment24577</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[А логика очень простая, если задаться вопросом: для чего используются внешние ключи в движке? Вот не вообще зачем они нужны, а реально для чего используются в таких движках, как ЛС и Альто? Ответ: для каскадного удаления связанных записей в таблицах. А кто-нибудь встречал хоть один сторонний плагин, который создает новые таблицы, связанные логически с сущностями движка, и который бы создавал при этом свои внешние ключи? Я не видел ни одного.<br/>
<br/>
Что получаем в итоге: при активном использовании сторонних плагинов целостность базы все равно часто нарушается, а гибкость кастомизации системы в целом ухудшается. Так какой смысл тянуть механизм внешних ключей? А организовать каскадное удаление сущностей не так уж и сложно. Нагрузка при удалении будет выше, но это не такая уж и частая операция.]]></description>
					<pubDate>Tue, 10 Nov 2015 15:21:05 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24578)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24578</guid>
					<link>http://altocms.ru/1439.html#comment24578</link>
					<author>anp135@gmail.com</author>
					<description><![CDATA[<blockquote>для чего используются внешние ключи в движке?</blockquote>внешние ключи, триггеры и процедуры используются не в движке, а в схеме данных, в БД. Для чего? Уфф. Для верного, правильного описания модели данных?<br/>
<br/>
<blockquote>А кто-нибудь встречал хоть один сторонний плагин, который создает новые таблицы, связанные логически с сущностями движка, и который бы создавал при этом свои внешние ключи?</blockquote><br/>
<blockquote>Так какой смысл тянуть механизм внешних ключей?</blockquote>Звучит как: «вокруг нас всё больше и больше безграмотных. Так какой смысл выделяться, давайте опустимся до общего уровня и будет всем хорошо...»<br/>
<br/>
<blockquote>Нагрузка при удалении будет выше, но это не такая уж и частая операция.</blockquote>суть там не в удалении, суть в модели. в модель можно заложить не только удаление, но и создание и изменение и когда сама модель не позволяет собрать протовоестественный набор данных, нагрузка снижается в общем, а не только в случае удаления…<br/>
<br/>
Тот момент, что в основной массе рнр-продуктов СУБД используется только как хранилище данных, да и то, данные зачастую хранятся «как бык поссал» — это да, но ведь это не повод разучиться читать и писать?! <br/>
<br/>
Отказ от моделирования данных и переход просто к хранению — это шаг в сторону неправильного понимания модели, фундамент конструкционных ошибок уже в коде, неэффективность хранения, избыточность, потери быстродействия, логично более дорогая цена за ошибку на более высоком уровне в приложении…]]></description>
					<pubDate>Tue, 10 Nov 2015 16:03:26 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24583)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24583</guid>
					<link>http://altocms.ru/1439.html#comment24583</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[Это все абсолютно верно. Если рассуждать с позиции «от кутюр». Мы же имеем дело с «прет-а-порте». Хорошо ли, плохо ли, нравится или нет, но это факт.<br/>
<br/>
К тому же надо понимать, что эффективно заниматься моделированием данных можно только тогда, когда у тебя есть абсолютно четкое представление обо всей структуре данных и обо всех методах манипулирования ими. А когда тут моделируется, а тут — нет, то все моделирование улетает в трубу.<br/>
<br/>
Конечно, это было б здорово, если б никто не мусорил. Но т.к. на практике мы этого добиться не можем, то нужно реализовать качественную уборку.<br/>
<br/>
А вообще, если говорить об интеграции, то в общем случае должна быть полная абстракция от механизмов хранения данных, и это на уровне API должно выполняться.]]></description>
					<pubDate>Tue, 10 Nov 2015 18:03:05 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24579)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24579</guid>
					<link>http://altocms.ru/1439.html#comment24579</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[FK на таблицу comment не позволяет удалять комментарии. Причем ссылается она сама на себя — это вообще нормально? Если я правильно понимаю, то по идее комментарии должны были удалиться при удалении топика, но не смогли из-за этого FK. Новая фишка с удалением из админки тоже не срабатывает. как я тут <a href="https://github.com/altocms/altocms/issues/763" rel="nofollow" >описывал</a> в конце.<br/>
<br/>
Можно ли просто убрать этот FK из базы, могут ли быть какие-то негативные последствия?]]></description>
					<pubDate>Tue, 10 Nov 2015 16:05:40 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24582)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24582</guid>
					<link>http://altocms.ru/1439.html#comment24582</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[Возможно, из-за каких-то манипуляций с БД (либо просто из-за сбоя) что-то сломалось во внешних ключах, потому эта проблема и возникла. И из админки, наверное, они не удаляются по той же причине.<br/>
<br/>
Негативные последствия — это не будут удаляться комменты вместе топиками. Но эти последствия, как я понимаю, и так имеют место быть. Так что, я полагаю, ничего хуже этого уже не будет.]]></description>
					<pubDate>Tue, 10 Nov 2015 17:59:08 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24585)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24585</guid>
					<link>http://altocms.ru/1439.html#comment24585</link>
					<author>reexistent@gmail.com</author>
					<description><![CDATA[Смотрите, о чем я говорю. Таблица comment ссылается сама на себя <br/>
<a href="https://github.com/altocms/altocms/blob/master/install/db/sql.sql#L1158" rel="nofollow" >github.com/altocms/altocms/blob/master/install/db/sql.sql#L1158</a><br/>
<br/>
<pre class="prettyprint"><code>ALTER TABLE `prefix_comment`
  ADD CONSTRAINT `prefix_topic_comment_fk` FOREIGN KEY (`comment_pid`) REFERENCES `prefix_comment` (`comment_id`) ON DELETE CASCADE ON UPDATE CASCADE,
  ADD CONSTRAINT `topic_comment_fk1` FOREIGN KEY (`user_id`) REFERENCES `prefix_user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE;</code></pre><br/>
<br/>
FK только называется <strong>prefix_topic_comment_fk</strong>, а на самом деле связывается с самой собой с полем <strong>comment_pid</strong>. <br/>
<br/>
Или вот как это выглядит в базе<br/>
<br/>
<img src="http://altocms.ru/uploads/images/00/06/66/2015/11/10/0u691eaeb7-dbec7380-682a5d9d.png" /><br/>
<br/>
Я не большой эксперт в базах данных но мне кажется что что-то здесь не то. Понятно что наверно стояла задача на дать удалить комментарий к которому подвязано дерево дискусии. Но в итоге получается что комментарии вообще нельзя удалить (без отключения проверки FK).]]></description>
					<pubDate>Tue, 10 Nov 2015 20:02:44 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24601)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24601</guid>
					<link>http://altocms.ru/1439.html#comment24601</link>
					<author>vshemarov@gmail.com</author>
					<description><![CDATA[А, вон о чем речь. Я так понимаю, что этот ключ, по идее, должен предотвращать возникновение «подвисших» веток комментов, когда удаляется родительский комментарий. И получается, что при удалении комента из середины ветки, должны удалиться все комменты, для которых он является родителем.<br/>
<br/>
Но, кстати, натолкнули на мысль: тут действительно могут быть проблемы при удалении топика с деревом комментариев — комментарии из дерева должны удаляться в определенном порядке. Надо будет перепроверить]]></description>
					<pubDate>Tue, 10 Nov 2015 21:37:24 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24573)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24573</guid>
					<link>http://altocms.ru/1439.html#comment24573</link>
					<author>anp135@gmail.com</author>
					<description><![CDATA[Проще иметь для каждого сайта свою БД. Независимую, саомодостаточную, целостную. Как это и было изначально задумано разработчиками.<br/>
Если далее нужно иметь единую БД пользователей между двумя сайтами — то настроить соответствующую репликацию (в ту или иную или даже в обе стороны).<br/>
Если нужна авторизация сквозная, то реплицировать сессии. Если сайты в разных доменах, но использовать единую куку не получится и надо менять авторизационный механизм, обновляя куку исходя из реплицированных данных по сессиям.]]></description>
					<pubDate>Tue, 10 Nov 2015 11:18:10 +0300</pubDate>
									</item>
							<item>
					<title>Два сайта с общими таблицами пользователей (comment #24584)</title>
					<guid isPermaLink="true">http://altocms.ru/t/1439/#comment24584</guid>
					<link>http://altocms.ru/1439.html#comment24584</link>
					<author>ieasyweb@myttk.ru</author>
					<description><![CDATA[да, в моём случае подойдёт только этот вариант, теперь уже ясно]]></description>
					<pubDate>Tue, 10 Nov 2015 18:12:52 +0300</pubDate>
									</item>
					</channel>
	</rss>
