我想导入一个大约 12 mb 的 sql 文件。但是它在加载时出现问题。有没有办法在不拆分 sql 文件的情况下上传它?
如果您无法使用 mysql 控制台,那么 phpmyadmin 文档中有一个有趣的解决方案:
尝试根据您的操作系统的需要从 mysql 控制台导入它。
mysql -u {DB-USER-NAME} -p {DB-NAME} < {db.file.sql path}
或者如果它在远程服务器上,请使用 -h 标志来指定主机。
mysql -u {DB-USER-NAME} -h {MySQL-SERVER-HOST-NAME} -p {DB-NAME} < {db.file.sql path}
好的,感谢大家的回复。我在 php.ini 中做了一些更改并压缩了文件。对我来说,它很管用 :)
这是一个很好的答案。对于任何可能不太精通的人来说,您只需将 DB 文件上传到主机上的文件管理器,然后在主机上使用 SSH 进行本地操作即可。这比在服务器上安装 mysql 进行一次迁移要容易得多。谢谢大家的帮助!(另外,我不需要括号)
对于那些想知道的人,您需要浏览到 MySQL/bin 文件夹来运行该命令。效果很好。谢谢。
他们没有密码怎么办?使用默认用户名为 root 的数据库?使用此命令时,系统会要求输入密码。
你必须做的三件事:
在 php.ini 你的 php 安装中(注意:根据你想要的 CLI、apache 还是 nginx,找到正确的 php.ini 进行操作)
php.ini
post_max_size=500M upload_max_filesize=500M memory_limit=900M
或设置其他值。
,请重新启动/重新加载 apache;如果使用 nginx,请重新启动/重新加载 nginx 的 php-fpm。
远程服务器?
增加 max_execution_time ,因为上传文件需要时间。
max_execution_time
NGINX 安装?
你必须添加: client_max_body_size 912M; 到 /etc/nginx/nginx.conf 块 http{...} 中
client_max_body_size 912M;
/etc/nginx/nginx.conf
http{...}
这必须添加到你的 apache 目录,而不是 cli 目录(至少在我的 Ubuntu 机器上测试过)
@RickSanchez 你确定你在 apache 上运行了这个 php 版本吗?请运行 phpinfo() 并验证值是否已正确设置且服务器是否已重新启动
不要忘记在 php ini 中提高 max_execution_time 值并重新启动 apache
编辑位于 phpmyadmin 目录中的 config.inc.php 文件。在我的例子中,它位于 C:\wamp\apps\phpmyadmin3.2.0.1\config.inc.php .
C:\wamp\apps\phpmyadmin3.2.0.1\config.inc.php
找到上面的行 $cfg['UploadDir'] 并将其更新为 $cfg['UploadDir'] = 'upload';
$cfg['UploadDir']
$cfg['UploadDir'] = 'upload';
然后,在 phpmyadmin 目录内创建一个名为“upload”的目录(对我来说,是在 C:\wamp\apps\phpmyadmin3.2.0.1\upload\ )。
C:\wamp\apps\phpmyadmin3.2.0.1\upload\
然后将您要导入的大型 SQL 文件放入新 upload 目录中。现在,当您进入 phpmyadmin 控制台中的数据库导入页面时,您会注意到一个以前没有的下拉菜单 - 它包含您刚刚创建的上传目录中的所有 sql 文件。您现在可以选择它并开始导入。
upload
如果您没有在 Windows 上使用 WAMP,那么我相信您能够毫不费力地将其适应您的环境。
参考: http://daipratt.co.uk/importing-large-files-into-mysql-with-phpmyadmin/comment-page-4/
在较新版本的 phpMyAdmin 中,$cfg['UploadDir'] var 根本不存在;但是,只需在文件的新行上添加 var,此解决方案仍然有效。
var 位于同一目录的 config.default.php 中,我使用的是 phpmyadmin 版本 4.6.4
无法再编辑之前的评论,目录是 libraries/config.default.php
LINUX 用户的解决方案(使用 sudo 运行)
创建“上传”和“保存”目录:
mkdir /etc/phpmyadmin/upload mkdir /etc/phpmyadmin/save chmod a+w /etc/phpmyadmin/upload chmod a+w /etc/phpmyadmin/save
然后编辑phpmyadmin的配置文件:
gedit /etc/phpmyadmin/config.inc.php
最后为“上传”和“保存”目录添加绝对路径:
$cfg['UploadDir'] = '/etc/phpmyadmin/upload'; $cfg['SaveDir'] = '/etc/phpmyadmin/save';
现在,只需将文件拖放到 /etc/phpmyadmin/upload 文件夹中,然后您就可以从 phpmyadmin 中选择它们。
/etc/phpmyadmin/upload
希望这有帮助。
使用此方法时,当我单击上传表单上的提交按钮时,phpmyadmin 会给我一个“文件无法读取!”消息。现在正在排除故障。
@JoeRocc 你找到问题的解决方案了吗?也许是权限或所有权问题。尝试使用 sudo chmod 777 your-filename.sql
775。不是 777。不建议设置 777 来让实时服务器正常运行。它存在安全问题。
只需一行即可完成(确保 mysql 命令可作为全局命令使用,或者只需转到 mysql 安装文件夹并进入 bin 文件夹)
mysql -u database_user_name -p -D database_name < complete_file_path_with_file_name_and_extension
这里
u
p
D
---不要忘记 < 在数据库名称后添加符号---
<
带有名称和扩展名的完整文件路径可以像
c:\folder_name\"folder name"\sql_file.sql
---如果您的文件夹和文件名包含空格,请使用双引号绑定它们---
提示和注意事项:您可以在之后写下您的密码, -p 但是我们不建议这样做,因为它会显示给当时正在查看您屏幕的其他人,如果您不在那里写下,它会询问您何时按回车键执行命令。
-p