PHPMyAdmin导入/导出相同的服务器失败

时间:2014-07-28 14:11:07

标签: mysql windows phpmyadmin plesk

我一直在尝试找出复制结构的最佳方法。从一个数据库到另一个数据库的数据,但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社区。

由于

鲍勃

2 个答案:

答案 0 :(得分:1)

我怀疑你已经修改了输出文件。

对于表和索引定义,mysqladmin使用默认分隔符';'但对于程序和功能,它使用' $$'。 DBMS需要知道分隔符已经更改 - 因此在导出文件中,表定义和过程定义之间应该有这样的行:

DELIMITER $$

顺便提一下,在MySQL中可以看到奇怪的撇号(例如)CMS_identifyFileType - 请参阅Using backticks around field names进行讨论。

答案 1 :(得分:0)

我不知道这是否是正确的方法,但最终这对我有用:

我使用默认选项进行了导出。

我在Dreamweaver中打开了文件(它似乎比Notepad ++更好地处理长度文件)

添加了' USE mydatabaseName;'到了开头

我删除了所有注释行

我删除了' delimiter $$'线

我在行的末尾替换了任何$$;

我用空格

替换了任何孤儿$$(在一条线上)

我用空格替换了所有反引号

将SQL文件上传到PHPMyAdmin并且它最终有效(我尝试不执行上述每个步骤,如果我错过了其中任何一个,我会遇到许多不同的语法语法错误之一)。在我看来,PHPMyAdmin的导入/导出系统确实需要一些工作。

警告:我的表,列和过程名称不包含任何特殊字符,空格或保留字,因此我可以在没有反引号的情况下逃脱。如果您有任何不寻常之处,您将需要它们。