Как увеличить значение поля nid в таблице узлов в базе данных?
Я использую каналы для импорта узлов из другой системы. Эта система использует очень длинный номер для своего идентификатора узла, например: 17675272378. Как вы можете видеть, это число состоит из 11 цифр. Проблема в том, что Drupal допускает значение nid только до 10 цифр, после чего импорт просто завершается неудачей.
Я подумал об изменении значения длины для nid для таблицы узла непосредственно в базе данных. Но это не так просто, есть много другие таблицы, в которых есть это поле, например: поле entity_id для таблицы field_data_body.
Возможно, я смогу изменить значения в базе данных, если экспортирую таблицу, а затем найду и заменю значение "10" на "15", а затем после замены базы данных на новую. Но мой вопрос таков: возникнут ли у меня другие проблемы, если я это сделаю?
Как я могу разобраться в этом?
Вот мои снимки:
2 answers
Принудительное использование при импорте идентификатора другой системы нарушит последовательный характер nid drupal. Вы должны добавить текстовое поле на принимающем сайте, чтобы сохранить старый идентификатор сайта и позволить drupal назначить новые.
Вы должны изменить свою таблицу, чтобы изменить тип данных с INT
на BIGINT
, потому что ваш номер 17675272378
не поддерживается типом данных INT
:
ALTER TABLE `node` CHANGE `nid` `nid` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT;
ALTER TABLE `field_data_body` CHANGE `entity_id` `entity_id` BIGINT UNSIGNED NOT NULL;
INT - целое число нормального размера, которое может быть подписано или без знака. Если подписано, допустимый диапазон составляет от -2147483648 до 2147483647. Если без знака, допустимый диапазон составляет от 0 до 4294967295. Вы можете указать ширина до 11 цифр.
BIGINT - большое целое число, которое может быть подписано или без знака. Если подписано, то допустимый диапазон составляет от -9223372036854775808 до 9223372036854775807. Если без знака, допустимый диапазон составляет от 0 до 18446744073709551615. Вы можете указать ширину до 20 цифр.
Для получения более подробной информации обратитесь к Типы данных MySQL.