Импорт старых баз данных 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.