ОШИБКА 1064 при импорте автономного файла в MySQL Workbench

#mysql #sql #syntax #mysql-workbench

#mysql #sql #синтаксис #mysql-workbench

Вопрос:

Я использую MySQL Workbench 8.0. У меня есть файл базы данных в формате SQLite 3, который я хочу импортировать в SQL Workbench для последующего обратного проектирования. Когда я импортирую файл, я получаю следующую ошибку:

«ОШИБКА 1064 (42000) в строке 1: у вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с «ТРАНЗАКЦИЕЙ» в строке 1. Сбой операции с кодом выхода 1″

Начало файла .sqlite выглядит следующим образом:

 BEGIN TRANSACTION;
DROP TABLE IF EXISTS `ZATTACHMENT`;
CREATE TABLE IF NOT EXISTS `ZATTACHMENT` (
    `Z_PK`  INTEGER,
    `Z_ENT` INTEGER,

  

Какие-либо подсказки по этому поводу? Я совершенно новичок в синтаксисе SQL.

Комментарии:

1. Пожалуйста, покажите остальную часть инструкции create table. Также вам не нужна транзакция begin с инструкциями DDL..

2. MySQL не поддерживает транзакционный DDL, поэтому начинать транзакцию не имеет смысла

Ответ №1:

В MySQL это START TRANSACTION, а не BEGIN TRANSACTION .

SQL такой. Незначительные несовместимости между марками и моделями серверов таблиц — это боль в шее xxx.

Комментарии:

1. ‘BEGIN и BEGIN WORK поддерживаются в качестве псевдонимов START TRANSACTION для инициирования транзакции. START TRANSACTION — это стандартный синтаксис SQL, рекомендуемый способ запуска одноранговой транзакции и допускает модификаторы, которые BEGIN не выполняет. ‘ dev.mysql.com/doc/refman/8.0/en/commit.html но в любом случае не подходит для операторов DDL

2. Спасибо. Это сработало, однако программа возвращает ошибку для ТАБЛИЦЫ УДАЛЕНИЯ второй строки, ЕСЛИ ОНА СУЩЕСТВУЕТ ZATTACHMENT ;. Здесь что-то явно не так?

3. @T-StoneLeif вы не должны принимать ответы перед тестированием, это просто мешает другим искать. И я не могу воспроизвести вашу проблему db-fiddle.com/f/eUBon3mRjXcJWXQykhxSNT/0