Назад | Перейти на главную страницу

mysqldump 5.7 - совместимость с 5.5

Я пытаюсь экспортировать данные с mysql 5.7 на сервер mysql 5.5. Проблема, с которой я столкнулся, заключается в том, что 5.5 не поддерживает более одного ON UPDATE CURRENT_TIMESTAMP, но в 5.7 есть несколько столбцов временных меток. Вопросы будут: есть ли способ отключить ON UPDATE CURRENT_TIMESTAMP только im mysqldum, не касаясь самой базы данных. я пытался --compatible=mysql323 и --compatible=mysql40 но эти режимы создают другие проблемы совместимости, например MODE=InnoDB вместо того ENGINE=InnoDB. Любая помощь или совет будут очень благодарны.

Используйте версию 5.5 mysqldump создать дамп. Это может сработать. Или это может привести к другим неприятностям.

5.5 имел очень ограниченный набор значений по умолчанию для TIMESTAMP столбцы. Даже если бы вы могли отключить несовместимый синтаксис, вы бы получили CREATE TABLE Это будет работать.

Возможно, это только верхушка айсберга. Что вы собираетесь делать на сервере версии 5.5? Может, просто для аналитики? И ты не будешь делать INSERTs или UPDATEs, так это не имеет значения по умолчанию?

План B:

mysqldump ... --no-data

затем отредактируйте значения по умолчанию для TIMESTAMPs и скормить результат mysql. Таблицы будут построены, но еще не заполнены.

mysqldump ... --no-create | mysql ...

для загрузки данных. (Предупреждение: я не уверен в написании параметра --no)

Вы уже нашли флаг совместимости для дампа, и в нем нет конкретной версии.

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

(В общем, прямая совместимость с любыми существенными изменениями затруднена. Обычно вам нужна новая версия некоторого программного обеспечения для чтения новых структур данных и синтаксиса.)