我正在尝试在 phpmyadmin 中导入此 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
'<br /> <b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tr' at line 1
我该怎么做才能进行此导入?
假设您不能进一步增加内存大小,那么有几个选项。
如果您不熟悉命令行并且您真的想坚持使用 GUI 样式导入,那么您可以使用 BigDump ( http://www.ozerov.de/bigdump/ )。我用过一次,但已经有一段时间了。根据我的记忆,您将下载一个名为 bigdump.php 的文件(带有一些说明)并将其放在您的网络服务器上的 MySQL DB 转储文件的目录中,该文件太大而无法通过 PHPMYADMIN 导入。然后使用浏览器导航到它 - 例如http://your-website.com/bigdump.php。
如果您熟悉命令行并使用基于 Linux 的系统,那么您可以使用如下代码:
mysql -u 用户名 -p 数据库名 < 文件名.sql
但是,在运行此命令之前,数据库和用户(具有数据库权限)需要存在。注意我从另一个来源复制了上述命令。我总是像这样进行转储和恢复: DUMP:
mysqldump -u DB_USER -h DB_HOST -pDB_PASSWORD DB_NAME | gzip -9 > DB_NAME.sql.gz
RESTORE:gunzip < PATH_TO_DUMP/DB_NAME.sql.gz | mysql -u DB_USER -pDB_PASSWORD DB_NAME
FTP & RESTORE 说明:
在此处下载 FileZilla:http: //filezilla-project.org/download.php? type=client
通常,您可以使用与 SSH 相同的登录名和密码(命令行登录名)通过 FTP 进入您的服务器(尤其是共享主机)。只需确保在 FileZilla 中正确设置与服务器的连接即可。
连接后,您的默认路径可能是您的 $HOME 文件夹(在 nix 机器上)。如果您不打算进行大量 FTP 传输,只需在其中转储您想要的内容。您始终可以从命令行移动它。
如果您通过 FTP 将 MySQL 转储到您的 $HOME 文件夹,则名为 mydb 的数据库和名为 mydb.sql.gz 的数据库转储文件(在 $HOME 文件夹中)的 RESTORE 命令将是:
您显然需要将 DB_USER 和 DB_PASSWORD 值更改为您为数据库设置的用户和密码。
记住:
FTP数据库并恢复它......一步一步
cd $HOME
或cd /usr/grant
. (在 Linux 机器上,$HOME 是一个环境变量,类似于 /usr/grant。)gunzip < /usr/grant/mydb.sql.gz | mysql -u mydb_grant -pmydb_password mydb
(-p 和密码之间没有空格,因为这是它需要的方式,这不是错字)。一旦最后一个命令完成,您的数据库就已恢复。我不建议使用我提供的数据库用户和密码,只需将它们替换为您自己的更安全的选择。
没有 FTP 的不同服务器上的 DUMP 和 RESTORE
如果您希望跳过 FTP 内容并且不介意重做 DUMP,那么您可以这样做:
mysqldump -u SOURCE_DB_USER -h source.com -pSOURCE_DB_PASSWORD mydb| gzip -9 > $HOME/mydb.sql.gz
source.com 是 SOURCE 服务器(数据库当前所在的位置)gunzip < $HOME/mydb.sql.gz | mysql -u DEST_DB_USER -pDEST_DB_PASSWORD mydb
这应该就是将数据库从一台服务器移动到另一台服务器所需要做的全部工作。需要注意的是,我只在我自己的专用 Ubuntu(带有标准 LAMP)和 Dreamhost 的 VPS 服务器(我相信它运行 CentOS 但我可能是错的)上做过这个。
你可以:
memory_limit
post_max_size
max_execution_time
您的 SQL 文件是否已压缩?我在使用 6MB 压缩 sql 文件时遇到了这个问题。我将它解压成一个 53MB 的未压缩 sql 文件,它可以工作。进程内转储文件的解压缩必须占用所有内存。
如果您的数据库大小超过 128 MB,则将您的数据库分成几部分。
使用SQL Dump Splitter软件
SQL Dump Splitter 是一个 430 KB 的应用程序,可以完全控制轻松地将大型数据库拆分为较小的 SQL 文件。使用 SQL 转储拆分器,您可以:
如果您可以通过 mysql 对服务器进行 ssh 访问,那么您可以将带有 mysql 转储的文件放在某个地方,请输入 mysql 控制台:
或者,如果 mysql 服务器位于 localhost 以外的位置,并且不仅允许来自 localhost 的连接:
然后会要求您输入 mysql 用户的密码。现在你在 mysql 控制台中。在这里你可以输入
您将看到如何执行转储中的命令。
在这种方法中,您不关心任何 php 内存限制。