MySQL中的错误1064(42000)

siv*_*636 9 mysql azure mysql-error-1064

我试图使用从MS SQL Azure数据库创建的数据库转储填充新的MySQL空数据库,我收到以下错误

第1行的错误1064(42000):SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以获得在第1行"I"附近使用的正确语法

我使用mysqldump来执行此操作,并在命令提示符中使用类似于以下命令:

mysql --user=rootusername --pasword=password databasename < dumpfilename.sql
Run Code Online (Sandbox Code Playgroud)

Mysqldump花了大约30分钟来显示此错误消息.

msa*_*ord 9

(对于那些从搜索引擎来到这个问题的人),检查你的存储过程是否声明了一个自定义分隔符,因为这是当引擎无法弄清楚如何终止语句时可能会看到的错误:

错误1064(42000)在第3行:您的SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在''在线附近使用正确的语法...

如果您有数据库转储,请参阅:

DROP PROCEDURE IF EXISTS prc_test;
CREATE PROCEDURE prc_test( test varchar(50))
BEGIN
    SET @sqlstr = CONCAT_WS(' ', 'CREATE DATABASE',  test, 'CHARACTER SET utf8 COLLATE utf8_general_ci');
    SELECT @sqlstr;
    PREPARE stmt FROM @sqlstr;
    EXECUTE stmt;
END;
Run Code Online (Sandbox Code Playgroud)

尝试使用自定义包装DELIMITER:

DROP PROCEDURE IF EXISTS prc_test;
DELIMITER $$
CREATE PROCEDURE prc_test( test varchar(50))
BEGIN
    SET @sqlstr = CONCAT_WS(' ', 'CREATE DATABASE',  test, 'CHARACTER SET utf8 COLLATE utf8_general_ci');
    SELECT @sqlstr;
    PREPARE stmt FROM @sqlstr;
    EXECUTE stmt;
END;
$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)


Man*_*uel 8

您是否选择了特定的数据库:

USE database_name
Run Code Online (Sandbox Code Playgroud)

除此之外,我无法想到出现此错误的任何原因.


Jam*_*nen 1

检查你的转储文件。一开始看起来就像是一个流浪角色。SQL 并不是世界各地的标准,MySQL 导入程序期望 MySQL 友好的 SQL。我敢打赌你们的出口商做了一些奇怪的事情。

您可能需要稍微修改该文件才能使其与 MySQL 一起工作。