#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