phpMyAdmin:无法导入庞大的数据库文件,有啥建议吗?
Posted
技术标签:
【中文标题】phpMyAdmin:无法导入庞大的数据库文件,有啥建议吗?【英文标题】:phpMyAdmin: Can't import huge database file, any suggestions?phpMyAdmin:无法导入庞大的数据库文件,有什么建议吗? 【发布时间】:2011-06-30 09:23:18 【问题描述】:我最近买了一台新电脑,所以我想把我所有的网络项目都搬过来。移动文件很容易,但是移动数据库似乎有点困难。我使用 phpMyAdmin 导出了所有数据库,并将其保存到 localhost.sql。然后我尝试在我的新计算机上也使用 phpMyAdmin 导入它,我得到了错误:
No data to import. Either no filename was sent or the filesize exceeded the maximum allowed size. See FAQ 1.16. (This was translated from Swedish)
按照建议,我查看了常见问题解答。他们提到了一个名为 BigDump 的工具。所以我下载了它,在查看了运行它所需的设置后,我意识到我不能使用它。为什么?因为它需要连接到一个特定的数据库。我正在尝试一次导入许多数据库。所以,那里没有成功。
我还尝试将 PHP 的 upload_max_filesize(以及常见问题解答中提到的另一个)设置为 999 之类的值。由于某种原因,这似乎也不起作用。在再次运行之前,我确实重新启动了所有服务。
我应该提到我在旧计算机上使用了 XAMPP,而我在新计算机上切换到了 WAMP。不过这应该没关系,对吧?由于两个“包”都使用 phpMyAdmin 和 apache。
关于如何绕过这个噩梦有什么建议吗?
【问题讨论】:
你的数据库有多大? 您将upload_max_size设置为999或999M?只是想确认一下。 对不起,我设置为 999M。文件大小为 4.68 MB。 请使用 phpinfo (help.rackspacecloud.com/article.php?id=082) 并确认您在 php.ini 中的更改确实发生了。可能是您更改了错误的 php.ini(您也可以从 phpinfo 中看到 php.ini 的路径)。其次,如果您在 php.ini 文件中出现任何语法错误,那里的配置设置将被忽略并应用默认配置(AFAIK 将上传限制设置为 2MB) @Sawar;为什么 h*ll 有几个 php.ini 的?问题是我更改了错误的文件。我现在可以导入它,但是我现在面临另一个问题。Access denied for user 'root'@'localhost' to database 'information_schema'
。一半的数据库是 importet,但它卡在那里。
【参考方案1】:
操作方法
确保在 "php.ini" 中同时更改 *"post_max_size"* 和 *"upload_max_filesize"*(位于 "php.exe" 是)。
以下示例允许您上传和导入 128MB 的 sql 文件:
post_max_size=128M
upload_max_filesize=128M
重新启动 Apache,一切就绪。
替代品
解决此问题的另一种方法是使用命令行。但这是一种变通方法,并且与变通方法一样丑陋:
C:\xampp\mysql\mysql.exe -u root -p db_name < C:\some_path\your_sql_file.sql
由于您使用的不是服务器而是命令行,因此上传和 POST 大小无关紧要。这就是为什么我将其称为“解决方法”,因为它实际上并不能解决您的问题。
【讨论】:
好答案(应该被 OP 接受):命令行方法对我有用,但请确保 mysql max_allowed_packet 设置(在 my.cnf 文件或 my.ini 文件中的 mysql 设置文件夹中system) 大于您要导入/上传的 .sql 文件的大小。例如,我的 .sql 大约为 250Mb,所以我将 max_allowed_packet 设置为 1024M(远高于此值)以确保!大概 max_allowed_packet 也适用于使用 phpmyadmin,因为尽管您必须设置 post_max_size 和 upload_max_filesize,但如果未设置 max_allowed_packet,您仍然可能会收到错误。 如果您看到“mysql 服务器已消失”,错误代码为 2006,那么这可能是由于 max_allowed_packet 小于您要导入/上传的文件 - 所以我上面的评论应该为您解决这个问题.【参考方案2】:其他人总是试图重新配置 php.ini 文件,但对我来说,我认为最好的做法是使用您的 MYSQL 控制台,因为它确实可以节省您的时间。
以下是 MYSQL 控制台的分步指南:
打开你的 MYSQL 控制台然后运行它。
类型:
mysql> 使用数据库名;
mysql> 源位置_of_your_file;
location_of_your_file 应该类似于 C:\mydb.sql
所以命令是mysql>source C:\mydb.sql;
这种导入 sql dump 对 BIG SQL FILE 很有帮助。
我将我的文件 mydb.sql 复制到目录 C: 。它应该是大写的 C: 以便运行因为它会给你一个 mysql 错误或语法错误
【讨论】:
【参考方案3】:在 wamp 服务器中:
-
打开路径“C:\wamp\apps\phpmyadmin”中的 config.inc.php 文件并设置/添加这一行。 $cfg['UploadDir'] = '上传';
重启所有服务
现在在您的 phpmyadmin(C:\wamp\apps\phpmyadmin4.0.4\upload) 文件夹中创建上传文件夹,并将您的 .sql 文件放入上传文件夹。
现在在浏览器中打开 phpmyadmin,进行导入。您可以在带有该上传目录文件夹和文件的浏览按钮下方的下拉列表中看到该文件。
选择它并开始……
【讨论】:
这对我有用,我不知道为什么它不起作用。 不知道这个功能,在共享主机上未经许可更改 PHP 设置或拥有 shell 访问权限时非常有用。【参考方案4】:在xampp\php\php.ini
中进行更改
查找:
post_max_size = 8M
upload_max_filesize = 2M
max_execution_time = 30
max_input_time = 60
memory_limit = 8M
改为:
post_max_size = 750M
upload_max_filesize = 750M
max_execution_time = 5000
max_input_time = 5000
memory_limit = 1000M
【讨论】:
【参考方案5】:您可以从命令行导入 - 例如mysql < databasedump.sql
(取决于操作系统)。
【讨论】:
我也想过,但是,我不是命令行忍者。我如何指定文件在哪个文件夹中?如果我只是将它移动到与 mysql.exe 文件相同的文件夹中,它会起作用吗?谢谢! 您需要在当前工作目录中拥有该文件 - 或在命令行中使用完整路径名。 (对不起...我运行 linux;不知道 windows 上的确切命令。) 好的,谢谢!我让 phpMyAdmin 工作,但我编辑了错误的 php.ini 文件。 (有点尴尬)不过还是很高兴知道,谢谢!【参考方案6】:按照此步骤转储庞大的数据库:
1) 从http://www.ozerov.de/bigdump/下载php脚本BigDump.php
2) 将您的 bigdump.php 和 databasedump.sql 移动到项目文件夹(htdocs 或 www)中。
3) 打开 bigdump.php 文件并编辑以下部分:
$db_server = 'localhost';
$db_name = '';
$db_username = '';
$db_password = '';
$filename = '.sql';
4) 在浏览器中打开 bigdump.php 并点击导入链接。
【讨论】:
【参考方案7】:这将在几秒钟内导入您的大型 sql 文件:
e:\xampp\mysql\bin>mysql -u root -h localhost < verybigsqlfile.sql
不要使用 phpmyadmin 导入大型 sql 文件。如果你是在线使用mysql,那就用mysql控制台访问吧。
【讨论】:
@CodeWithCoffee 那是因为您必须在对其运行命令之前选择一个数据库:使用 databasenamehere【参考方案8】:压缩 sql 文件(仅 gzip、bzip2、zip)并导入。压缩像 db csv 文件这样的测试文件将显着减小文件大小(~ 11 mb 到 2 mb),并且 phpmyadmin 导入引擎可以检测压缩数据
【讨论】:
【参考方案9】:我知道这是旧的但是.. 我很久以前就想出了这个问题。 要么我使用控制台执行转储 sql 文件。 或者我使用adminer 作为 PHPmyAdmin 的替代品。
【讨论】:
【参考方案10】:修改my.ini文件
在 [mysqld] 部分添加以下行
wait_timeout=28800
interactive_timeout = 28800
max_allowed_packet=32M
重启mysql
打开 dump.sql 文件 添加以下行
use mydbname
转到mysql文件夹并运行此命令
mysql -u root -h localhost < dump.sql
【讨论】:
【参考方案11】:phpmyadmin 也可以从硬盘读取 - 上传转储文件并使用此功能。但是,如果可能,我强烈建议您从控制台使用。它的速度更快,因为 php 不必先处理文件,而是直接加载到服务器中。
【讨论】:
这就是我所做的。我现在在本地运行 WAMP,所以只是尝试使用 phpMyAdmin 的上传功能来导入它。控制台听起来是个好主意,但是,我不是那个领域的忍者。阅读 awm 的答案。【参考方案12】:如果您正在上传非常大的数据库,但 Web 界面将被限制为 HTTP 最大 HTTP 请求大小
编辑PHP.ini
以增加上传限制
找到这一行
;;;;;;;;;;;;;;;;
; File Uploads ;
;;;;;;;;;;;;;;;;
; Whether to allow HTTP file uploads.
file_uploads = On
; Temporary directory for HTTP uploaded files (will use system default if not
; specified).
;upload_tmp_dir =
; Maximum allowed size for uploaded files.
upload_max_filesize = ??M **<--- change here ....**
然后重启服务器
/sbin/service httpd restart
或者使用directadmin重启http服务
【讨论】:
那会是“post_max_size”设置吗?我也改了。 仔细想想,它无论如何都应该接受这个文件。我的意思是,它不是一个巨大的文件,它只是一个巨大的数据库。文件大小约为 4 MB。 (Max: 128 MiB) PHP myadmin 上传者说检查一下 勾选这个会生成SQL文件并一点一点地执行查询,但并不实用! 好吧,我的实际上是 2048 KiB。 (那是 2 MB,对吗?)我必须更改什么设置?【参考方案13】:使用SQLYog 进行数据库操作,这是专业人士的最佳选择。通过使用 SQLYog,您可以导入 nGB n->finite_size 的 sql db。
【讨论】:
【参考方案14】:我尝试更改允许的大小,但这并没有解决问题。
但是,在我的特殊情况下,有一个名为“uploaddir”的文件夹位于:
EasyPHP\modules\phpmyadmin\uploaddir
我把 SQL 文件放在那里,然后回到 PHP My Admin 的“导入”选项卡。 有一个选项允许我上传已经位于“uploaddir”文件夹中的文件;他们没有限制。
我使用的是 Windows 和 EasyPHP 12.1
【讨论】:
【参考方案15】:简单的解决方案是只需下载并安装“MySql Workbench”软件,它基于 gui 且易于使用。我最近导入了 300mb 大小的 mysql 数据库。
【讨论】:
【参考方案16】:如果你在linux上,你可以去终端,连接到mysql并选择数据库后,只需输入:
\. /path/to/database/database.sql
【讨论】:
以上是关于phpMyAdmin:无法导入庞大的数据库文件,有啥建议吗?的主要内容,如果未能解决你的问题,请参考以下文章