Как изменить bigint на int в MySQL, с таблицей, имеющей внешние ключи - PullRequest
2 голосов
/ 18 января 2012

Недавно я заметил, что в одной из моих баз данных есть несколько полей типа bigint, которые можно заменить на тип "int".Проблема заключается в том, что база данных уже подключена и используется, а также в действии внешних ключей, поэтому, когда я пытаюсь изменить тип данных в автономной БД, mysql не разрешает мне выводить сообщение об ошибке: "# 1025- Ошибка при переименовании (...) ".

Так как я могу изменить эти поля, сохраняя внешние ключи довольными?(и не стирая существующую БД!)

Ответы [ 3 ]

1 голос
/ 19 марта 2015

Вы можете изменить столбец с BIGINT на INT, если в столбце нет данных, которые бы не вписывались в меньший тип данных INT.

ALTER TABLE mytable MODIFY COLUMN mycolumn INT (11);

0 голосов
/ 18 декабря 2012

Вы можете попробовать:

  1. Добавить новые столбцы с правильными типами.
  2. Копировать значения из старых столбцов в новые столбцы.
  3. Переименовать столбцы.
  4. Обновление ограничений (возможно, в два этапа - DROP и CREATE).
  5. Удаление старых столбцов.
0 голосов
/ 18 января 2012

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

...