computed_field и разделенные базы.

Главные вкладки

Аватар пользователя Alex_R Alex_R 9 января 2010 в 13:39

Разбираясь с мультисайтингом столкнулся с непонятной для меня проблемой. До мультисайтинга дело не доходит, сайт один (и локально), и при попытке выделения нескольких таблиц в отдельную базу уже перестает работать.
Свежая установка друпала: Друпал - 6.15, ССК - 6.x-2.6, Computed Field 6.x-1.0-beta3 и еще несколько модулей, которые к проблеме не относятся.

Создаю новый тип материала "news" (в итоге этот материал должен быть общим для сайтов в мультисайтинге)
В нем создаю новое поле "site" (вычисляемое)
код:

global $base_url;
$node_field[0]['value'] = $base_url;

результат сохраняется в базе данных.

Создаю новый материал типа "news" - Все работает как надо.

Теперь разделяю базу на две.

В settings.php выделяю несколько таблиц в отдельную базу "shar" (и переношу их в эту базу)

$db_prefix = array(
     'default'   => '',
     'filters'  => 'shar.',
     'filter_formats'  => 'shar.',
     'fupload_previewlist'  => 'shar.',
     'locales_source'  => 'shar.',
     'locales_target'  => 'shar.',
     'role'  =>'shar.',
     'sessions'  =>'shar.',
     'users'  =>'shar.',
   
     'comments'  =>'shar.',
     'content_access'  =>'shar.',
     'content_node_field'  =>'shar.',
     'content_node_field_instance'  =>'shar.',
     'content_type_news'  =>'shar.',
     'node'  =>'shar.',
     'node_access'  =>'shar.',
     'node_comment_statistics'  =>'shar.',
     'node_counter'  =>'shar.',
     'node_revisions'  =>'shar.',
     'node_type'  =>'shar.',
     'term_data'  =>'shar.',
     'term_hierarchy'  =>'shar.',
     'term_node'  =>'shar.',
     'term_relation'  =>'shar.',
     'term_synonym'  =>'shar.',
     'trigger_assignments'  =>'shar.',
     'views_display'  =>'shar.',
     'views_object_cache'  =>'shar.',
     'views_view'  =>'shar.',
     'vocabulary_node_types'  =>'shar.',
     'flood'  =>'shar.',
     'forum'  =>'shar.',
       );

Возможно что таблиц перенес больше чем надо для моего случая (по разному переносил, достаточно перенести content_type_news) , однако в данном случае это не важно, поскольку работать уже перестает Sad

При сохранении настроек поля (/admin/content/node-type/news/fields/field_site) пишет:

    * user warning: Table 'content_type_news' already exists query: CREATE TABLE shar.content_type_news ( `vid` INT unsigned NOT NULL DEFAULT 0, `nid` INT unsigned NOT NULL DEFAULT 0, PRIMARY KEY (vid), INDEX nid (nid) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ in W:\home\zr.rr\www\includes\database.inc on line 529.
    * user warning: Table 'content_type_news' already exists query: CREATE TABLE shar.content_type_news ( `vid` INT unsigned NOT NULL DEFAULT 0, `nid` INT unsigned NOT NULL DEFAULT 0, `field_site_value` VARCHAR(30) DEFAULT NULL, PRIMARY KEY (vid), INDEX nid (nid) ) /*!40100 DEFAULT CHARACTER SET UTF8 */ in W:\home\zr.rr\www\includes\database.inc on line 529.

При попытке сохранения материала типа news пишет:

warning: Invalid argument supplied for foreach() in W:\home\zr.rr\www\sites\all\modules\cck\content.module on line 1022.

И естественно вычисляемое поле не создается.

Собственно вопрос - как это можно побороть? Что я делаю не правильно? Почему, если одна и та же таблица находится в другой базе данных это уже вызывает ошибку?

P.S. Без модуля computed_field то что может без него работать - работает без ошибок.

Комментарии

Аватар пользователя Alex_R Alex_R 10 января 2010 в 0:55

Еще несколько локализую проблему.
Теперь установка чистая Друпал - 6.15, ССК - 6.x-2.6, Computed Field 6.x-1.0-beta3 никаких других модулей нет.
перед инсталляцией в setting.php пишу

$db_url = 'mysqli://root@localhost/al3';
$db_prefix = 'al4_';

т.е. база al3 и префикс для всех таблиц al4_.
Все работает нормально. Т.е. префиксы computed_field не пугают.

Уничтожаю установку и базу. Все делаю точно так же повторно кроме того, что при следующей инсталляции пишу:

$db_url = 'mysqli://root@localhost/al3';
$db_prefix = 'al4.';

т.е. база по умолчанию al3, однако ВСЕ таблицы создать в базе al4.

Ошибки начинают сыпаться при попытке войти в настройки поля computed_field.
Народ! Очень прошу - помогите решить эту проблему! Очень надо...

Аватар пользователя Alex_R Alex_R 5 февраля 2010 в 2:52

yurgon wrote:
да проблема есть, но решения нет!

У меня сейчас увы полный цейтнот, если есть возможность сформулировать проблему для автора модуля, то буду очень благодарен. Если нет, то сам смогу этим заняться не раньше, чем через 2-3 недели....
http://www.drupal.ru/node/39590

Аватар пользователя yurgon yurgon 5 февраля 2010 в 3:27

смыл в том что при использовании разных баз целиком все нормал, а как только хоть одну таблицу объединяешь, так сразу ckk накрывается медным тазом, даже не отображаются поля

Аватар пользователя fit fit 27 марта 2010 в 21:43

та же самая проблема с warning: Invalid argument supplied for foreach() in /modules/cck/content.module on line 1022.
сайт работает с двумя БД - одна общая, где

        'content_field_image'=>'_shared.',
        'content_node_field'=>'_shared.',
        'content_node_field_instance'=>'_shared.',
        'content_type_blog'=>'_shared.',
        'content_type_news'=>'_shared.',
        'content_type_page'=>'_shared.',
        'content_type_photo'=>'_shared.',

Жесть твориться после подрубания второго сайта к общей БД. Аналогичные глюки.... ФАККК

Аватар пользователя Alex_R Alex_R 25 августа 2010 в 17:07

Давно хотел написать как я эту проблему обошел, но все руки не доходили. Сегодня еще раз случайно проверил - проблема осталась!!! Поэтому рассказываю, свое совершенно тривиальное решение.
Для всех сайтов основной базой сделал общую, а таблицы которые для сайтов уникальные и находятся в другой базе (и при этом не заполняются с использованием Computed Field ) прописываю в setting в виде префиксов с точкой. И все работает.