Я пытаюсь экспортировать данные с 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.
(В общем, прямая совместимость с любыми существенными изменениями затруднена. Обычно вам нужна новая версия некоторого программного обеспечения для чтения новых структур данных и синтаксиса.)