将数据库导入 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_filesize
、memory_limit
和 post_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 < /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 < /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 < /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 数据库