将数据库导入 phpMyAdmin (MAMP) 时出现 SQL 语法错误

Posted

技术标签:

【中文标题】将数据库导入 phpMyAdmin (MAMP) 时出现 SQL 语法错误【英文标题】:SQL syntax errors when importing database into phpMyAdmin (MAMP) 【发布时间】:2013-12-19 20:10:58 【问题描述】:

为了使用 MAMP 将 120Mb 数据库导入 phpMyAdmin,我使用以下方法将其拆分:

split -l 100 /Applications/MAMP/htdocs/test/database_test_wordpress.sql /Applications/MAMP/htdocs/test/dbpart-

但是在导入第二部分时出现错误:

Error
SQL query:

CREATE TABLE  `wp_comments` (

 `comment_ID` BIGINT( 20 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
 `comment_post_ID` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT  '0',
 `comment_author` TINYTEXT NOT NULL ,
 `comment_author_email` VARCHAR( 100 ) NOT NULL DEFAULT  '',
 `comment_author_url` VARCHAR( 200 ) NOT NULL DEFAULT  '',
 `comment_author_IP` VARCHAR( 100 ) NOT NULL DEFAULT  '',
 `comment_date` DATETIME NOT NULL DEFAULT  '0000-00-00 00:00:00',
 `comment_date_gmt` DATETIME NOT NULL DEFAULT  '0000-00-00 00:00:00',
 `comment_content` TEXT NOT NULL ,
 `comment_karma` INT( 11 ) NOT NULL DEFAULT  '0',
 `comment_approved` VARCHAR( 20 ) NOT NULL DEFAULT  '1',
 `comment_agent` VARCHAR( 255 ) NOT NULL DEFAULT  '',
 `comment_type` VARCHAR( 20 ) NOT NULL DEFAULT  '',
 `comment_parent` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT  '0',
 `user_id` BIGINT( 20 ) UNSIGNED NOT NULL DEFAULT  '0',
PRIMARY KEY (  `comment_ID` ) ,
KEY  `comment_post_ID` (  `comment_post_ID` ) ,
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 '' at line 18 

我需要以某种方式升级数据库吗?还是我走远了?!抱歉,新手 :-)

注意:我首先尝试在 MAMP 的 php.ini 中增加 upload_max_filesizememory_limitpost_max_size,但在导入时出现 MySQL server has gone away 错误。

【问题讨论】:

您不能将包含跨越多行的 SQL 命令的文件“随机”拆分为 x 行,并且仍然希望它能够工作…… 尝试使用php导入sql文件,先读取文件file_get_contents,再读取mysql_query。这样就不用拆分sql文件了。 【参考方案1】:

split 是一个只对文本进行切片的 linux 命令。您不能只是这样做并期望导入起作用。在您的特定示例中,; 未正确完成表的创建,这意味着您很可能错过了文本剪切部分下方的索引或约束的创建。

我根本不会对文件进行切片并从控制台导入整个 SQL 文件,而不是为此使用 php。这应该可以解决问题:

mysql -u username -p database_name < file.sql

【讨论】:

谢谢莫斯蒂,我说过我是新手! - 所以我尝试了这个mysql -u root -p druglessdoctor &lt; /Applications/MAMP/htdocs/druglessdoctor/database_drugless_wordpress2.sql,得到了这个#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 'mysql -u root -p druglessdoctor &lt; /Applications/MAMP/htdocs/druglessdoctor/datab' at line 1 您似乎在mysql 提示符下运行它。你应该在你的 linux 提示符下这样做(只需退出 mysql,你就会在那里:) 是的,我迷路了。在 Mac 上,我在终端中执行此操作? 感谢您对我的包容!但我刚得到-bash: mysql: command not found,所以我用谷歌搜索,发现我需要先放这样的东西/Applications/MAMP/Library/bin/mysql --host=localhost -uroot -proot,这样我就可以说show databases;并查看所有这些-但是不知道如何使用你建议的行以druglessdoctor为目标? 你不能进入mysql提示。从终端本身执行此操作。假设 druglessdoctor 是您的数据库,只需编写 /Applications/MAMP/Library/bin/mysql -u root -p druglessdoctor &lt; /path/to/the/file.sql【参考方案2】:

感谢大家指出 split 不是正确的方法!

相反,我通过在重新启动 MAMP 之前编辑以下限制来上传原始 120Mb 文件:

在 MAMP/bin/php/php5.4.10/conf/php.ini 中,我将memory_limit 更改为200M,将post_max_size 更改为200M,将upload_max_filesize 更改为120M

然后我将 MAMP/Library/support-files/my-large.cnf 复制到 MAMP/Library 并将其重命名为 my.cnf,然后将 max_allowed_packet 设置为 100M

被指向这个方向 MAMP 常见问题解答和https://***.com/a/13613140/767761

【讨论】:

以上是关于将数据库导入 phpMyAdmin (MAMP) 时出现 SQL 语法错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 mamp、phpMyAdmin 导入 mysql 数据库

mamp phpmyadmin 错误脚本导入数据库

MAMP phpMyAdmin 数据库转储导入

markdown 在OSX上使用MAMP和phpMyAdmin导入大型数据库

MAMP phpmyadmin 上的脚本超时传递错误

MAMP的数据库