Как увеличить значение поля nid в таблице узлов в базе данных?


Я использую каналы для импорта узлов из другой системы. Эта система использует очень длинный номер для своего идентификатора узла, например: 17675272378. Как вы можете видеть, это число состоит из 11 цифр. Проблема в том, что Drupal допускает значение nid только до 10 цифр, после чего импорт просто завершается неудачей.

Я подумал об изменении значения длины для nid для таблицы узла непосредственно в базе данных. Но это не так просто, есть много другие таблицы, в которых есть это поле, например: поле entity_id для таблицы field_data_body.

Возможно, я смогу изменить значения в базе данных, если экспортирую таблицу, а затем найду и заменю значение "10" на "15", а затем после замены базы данных на новую. Но мой вопрос таков: возникнут ли у меня другие проблемы, если я это сделаю?

Как я могу разобраться в этом?

Вот мои снимки:

enter image description here

enter image description here

Author: Adrian Cid Almaguer, 2015-07-06

2 answers

Принудительное использование при импорте идентификатора другой системы нарушит последовательный характер nid drupal. Вы должны добавить текстовое поле на принимающем сайте, чтобы сохранить старый идентификатор сайта и позволить drupal назначить новые.

 3
Author: DeveloperWeeks, 2015-07-06 15:58:55

Вы должны изменить свою таблицу, чтобы изменить тип данных с 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.

 2
Author: Adrian Cid Almaguer, 2015-09-10 06:07:44