我一直在尝试找出复制结构的最佳方法。从一个数据库到另一个数据库的数据,但PHPMyAdmin导出似乎生成相当差的脚本。最明显的例子是如果我导出数据库(结构和数据)然后尝试在同一服务器上重新导入 (使用drop tables函数来防止冲突),我收到语法错误! ?我原以为PHPMyAdmin能够解析自己的导出。
我得到的错误是:
Error SQL query:
$$
DROP PROCEDURE IF EXISTS `CMS_identifyFileType`$$
MySQL said: Documentation
#1064 - 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 '$
DROP PROCEDURE IF EXISTS `CMS_identifyFileType`' at line 1
我觉得这个剧本有很奇怪的撇号很奇怪吗?
有没有人对我可能做错了什么有任何提示?我必须手动添加'使用myDatabasename;'脚本让它工作,不知道我是否遗漏了其他一些东西。
我的MySQL版本是在Windows Server 2008 R2服务器上运行的5.1.73社区。 p>
由于
鲍勃
答案 0 :(得分:1)
我怀疑你已经修改了输出文件。
对于表和索引定义,mysqladmin使用默认分隔符';'但对于程序和功能,它使用' $$'。 DBMS需要知道分隔符已经更改 - 因此在导出文件中,表定义和过程定义之间应该有这样的行:
DELIMITER $$
顺便提一下,在MySQL中可以看到奇怪的撇号(例如)CMS_identifyFileType
- 请参阅Using backticks around field names进行讨论。
答案 1 :(得分:0)
我不知道这是否是正确的方法,但最终这对我有用:
我使用默认选项进行了导出。
我在Dreamweaver中打开了文件(它似乎比Notepad ++更好地处理长度文件)
添加了' USE mydatabaseName;'到了开头
我删除了所有注释行
我删除了' delimiter $$'线
我在行的末尾替换了任何$$;
我用空格
替换了任何孤儿$$(在一条线上)我用空格替换了所有反引号
将SQL文件上传到PHPMyAdmin并且它最终有效(我尝试不执行上述每个步骤,如果我错过了其中任何一个,我会遇到许多不同的语法语法错误之一)。在我看来,PHPMyAdmin的导入/导出系统确实需要一些工作。
警告:我的表,列和过程名称不包含任何特殊字符,空格或保留字,因此我可以在没有反引号的情况下逃脱。如果您有任何不寻常之处,您将需要它们。