【发布时间】:2020-07-20 21:13:34
【问题描述】:
我们正在将我们的数据库从位于网络服务器上的移动到一个单独的服务器(从一个 Amazon EC2 网络服务器到一个 RDS 实例。)
我们有一个之前工作的 LOAD DATA INFILE,现在需要添加 LOCAL 关键字,因为数据库将位于与网络服务器不同的机器上。
在我的开发服务器上测试,结果不行:
- 我仍然可以像以前一样从 php 加载数据输入文件
- 我可以从 mysql 命令行加载 DATA LOCAL INFILE(使用 --local_infile=1)
- 我无法从 php 加载 DATA LOCAL INFILE。
在这两个有效的事情之间,它排除了:
- sql 或 php 代码问题
- 上传文件的问题,包括语法和文件权限
- mysql服务器设置问题
我得到的错误是: ERROR 1148 (42000): 此 MySQL 版本不允许使用的命令 (如果我不使用 --local_infile=1,我会从 mysql 命令行收到该错误)
其他一些相关信息:
- Ubuntu 12.04、mysql 5.5.24、php 5.3.10
- 我正在使用 php 的 mysql_connect(而不是 mysqli,因为我们计划使用不支持 mysqli 的 facebook 的 hiphop 编译器。)
-
因此,连接命令需要一个额外的标志集:
mysql_connect($dbHost, $dbUser, $dbPass, false, 128); - 我已经使用 phpinfo() 来确认
mysql.allow_local_infile = On - 我已在 Amazon RDS 上尝试过(以防我的开发服务器出现问题),但也无法正常工作。 (打开 local_infile 参数。)
我读到的唯一一个我没有尝试过的就是在我的开发服务器上编译 mysql 服务器并打开标志以允许本地 infile ......但即使我在我的开发服务器上运行它也是不会帮助我使用 Amazon RDS。 (除此之外,LOAD DATA LOCAL INFILE 确实可以从 mysql 命令行工作。)
这似乎是 php 的 mysql_connect() 的问题
任何使用 LOAD DATA LOCAL INFILE(可能来自 Amazon RDS)的人都知道让它工作的技巧吗?
【问题讨论】:
-
谢谢,根据http://php.net/releases/NEWS_5_4_0_beta1.txt,这是在 php 5.3.9 中修复的,我使用的是 php 5.3.10-1ubuntu3.4,但如果没有其他人有,我可能会尝试自己编译 php任何建议。
-
实际上,再看一遍,该错误似乎与 PDO 完全相关(您没有使用它)。
-
对于后来看到这个的其他人,@eggyal 提到的错误是bugs.php.net/bug.php?id=54158
标签: php mysql amazon-rds load-data-infile