Domain Access. Ошибка при добавлении нового поддомена.

Аватар пользователя roman-ivannikov roman-ivannikov 19 июля в 14:30

Всем привет!
На Drupal 7.59 используется модуль Domen Access последний версии.
Ошибка возникает при добавлении нового поддомена. Часть лога ошибки приводу ниже.
"... 1062 Duplicate entry '17' for key 'PRIMARY': INSERT INTO {domain} (domain_id, index, index, sitename, scheme, valid, weight, is_default, machine_name) ,: db_insert_placeholder_4,: db_insert_placeholder_5,: db_insert_placeholder_6,: db_insert_placeholder_7); Array ... "

Я понимаю, что в ошибке говорится о дублировании значения в первичном ключе. Вопрос. Где модуль берет значение для первичного ключа?

0 Thanks

Лучший ответ

Аватар пользователя roman-ivannikov roman-ivannikov 25 июля в 18:26

Спасибо, камрады. Разобрался.

Есть еще таблица связанная с модулем - domain_export. В ней было записей меньше, чем в таблице domain. Состоит она из двух полей. Одно из полей, с именем "domain_id", как раз и является авто-инкрементным.
Добавил в эту таблицу строку с данными из последней записи таблицы domain и всё: добавление новых записей через интерфейс модуля стал возможен. Значит кто-то ранее вносил изменения в эту таблицу.

Комментарии

Аватар пользователя Nikit Nikit 20 июля в 3:49

Покажите полный лог. Почему primary index domain_id в вставке, там её не должно быть.

Аватар пользователя roman-ivannikov roman-ivannikov 20 июля в 7:01

PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '15' for key 'PRIMARY': INSERT INTO {domain} (domain_id, subdomain, sitename, scheme, valid, weight, is_default, machine_name) VALUES (:db_insert_placeholder_0, :db_insert_placeholder_1, :db_insert_placeholder_2, :db_insert_placeholder_3, :db_insert_placeholder_4, :db_insert_placeholder_5, :db_insert_placeholder_6, :db_insert_placeholder_7); Array ( [:db_insert_placeholder_0] => 15 [:db_insert_placeholder_1] => sevastopol.nopss.ru [:db_insert_placeholder_2] => Национальная Организация Поддержки и Содействия Строителям [:db_insert_placeholder_3] => https [:db_insert_placeholder_4] => 1 [:db_insert_placeholder_5] => 82 [:db_insert_placeholder_6] => 0 [:db_insert_placeholder_7] => sevastopol_nopss_ru ) в функции drupal_write_record() (строка 7387 в файле /home/b/borisatm/nopss.ru/public_html/includes/common.inc).

На англоязычном ресурсе drupal разработчик модуля Domain Access только что ответил, что domain_id авто-генерируется функцией drupal_write_record(). По логике он должен брать значение, ориентируясь на таблицу domens. Может с ней что не так? Хотя я ее проверял и индексы ее.

Аватар пользователя roman-ivannikov roman-ivannikov 25 июля в 18:26

Спасибо, камрады. Разобрался.

Есть еще таблица связанная с модулем - domain_export. В ней было записей меньше, чем в таблице domain. Состоит она из двух полей. Одно из полей, с именем "domain_id", как раз и является авто-инкрементным.
Добавил в эту таблицу строку с данными из последней записи таблицы domain и всё: добавление новых записей через интерфейс модуля стал возможен. Значит кто-то ранее вносил изменения в эту таблицу.