Как изменить таблицу MySQL без потери данных?

в моем приложении я делаю некоторые изменения и загружаю их на сервер тестирования. Потому что у меня нет доступа к базе данных сервера я запускаю ALTER команды для внесения изменений.

используя метод, я выполнил следующую команду на сервере:

ALTER TABLE `blahblahtable` ADD COLUMN `newcolumn` INT(12) NOT NULL

после этого, я обнаружил, что все данные таблица была удалена. Теперь стол пуст.

поэтому мне нужно изменить таблицу без удаление его данных. Есть ли как это сделать?

2 ответов


ваш вопрос совершенно очевиден. Вы добавляете новый столбец в таблицу и устанавливаете его в NOT NULL.
Чтобы прояснить ситуацию, я объясню реакцию сервера при запуске команды:

  1. вы добавляете новый столбец, так что строка таблицы должен установить значение для этого столбца.

  2. поскольку вы не объявляете никаких значение по умолчанию все строки набора null для этого нового колонна.

  3. сервер замечает, что строки таблицы null значение в столбце, который не позволяет nulls. Это незаконно.

  4. для решения конфликта недопустимыми строками являются удалены.

есть некоторые хорошие исправления для этой проблемы:

  • поставил значение по умолчанию (рекомендуется) для столбца вы творящий.

  • создать столбец без the NOT NULL, установите соответствующие значения, а затем сделайте столбец NOT NULL.


вы можете создать временную таблицу, передать всю информацию из таблицы, которую вы хотите изменить, а затем вернуть информацию в измененную таблицу.