我正在尝试使用从 MS SQL Azure 数据库创建的数据库转储来填充新的 MySQL 空数据库,但出现以下错误
ERROR 1064 (42000) at line 1:您的 SQL 语法有错误;
检查与您的 MySQL 服务器版本对应的手册
在第 1 行“I”附近使用正确的语法
我使用 mysqldump 来执行此操作,并在命令提示符中使用类似于以下的命令:
mysql --user=rootusername --pasword=password databasename < dumpfilename.sql
Mysqldump 花了大约 30 分钟才显示此错误消息。
(对于那些通过搜索引擎提出此问题的人),请检查您的存储过程是否声明了自定义分隔符,因为当引擎无法弄清楚如何终止语句时,您可能会看到以下错误:
ERROR 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;
尝试用自定义包装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 ;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)