Импорт старых баз данных MySQL (5.6.10) в 5.6.12 приводит к ошибкам

Я создал то, что мне показалось простым дампом sql из более старой базы данных, до установки последней версии 5.6.12 на Mac OS X Server. Сейчас я пытаюсь импортировать файлы, но они создают бесконечное количество синтаксических ошибок.

Пример ошибок:

[ERROR in query 9] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=InnoDB AUTO_INCREMENT=6' at line 8
[ERROR in query 10] Table 'some.table' doesn't exist

Какие-нибудь советы?

Заранее спасибо!

1 ответ

Решение

Вы ответили на свой вопрос:

Проблема была: TYPE=InnoDB . Как я понял это должен быть ENGINE=InnoDB . Sequel Pro на Mac (1.0.2) по умолчанию создает дамп sql с типом "TYPE".

Да, это устаревший синтаксис.

http://dev.mysql.com/doc/refman/5.1/en/create-table.html говорит:

Заметка
Старший TYPE вариант был синонимом ENGINE, TYPE устарела с MySQL 4.0, но все еще поддерживается для обратной совместимости в MySQL 5.1 (за исключением MySQL 5.1.7). Начиная с MySQL 5.1.8, он выдает предупреждение. Это удалено в MySQL 5.5. Вы не должны использовать TYPE в любых новых приложениях, и вы должны немедленно начать преобразование существующих приложений в использование ENGINE вместо. (См. Примечания к выпуску для MySQL 5.1.8.)

Таким образом, ключевое слово устарело с 2006 года и удалено из продукта с 2010 года!

Об этой ошибке уже сообщалось здесь: https://code.google.com/p/sequel-pro/issues/detail?id=1668

Ответ разработчика заключается в том, что Sequel Pro использует SHOW CREATE TABLE для экспорта определений таблиц. Если ваш SQL_MODE = "MYSQL323" или "MYSQL40", тогда SHOW CREATE TABLE будет использовать устаревшую опцию TYPE вместо правильной опции ENGINE. Таким образом, вы можете обойти эту проблему, убедившись, что ваш SQL_MODE не настроен на совместимость со старой версией MySQL.

Другие вопросы по тегам