我们正在将我们的数据库从网络服务器上移动到单独的服务器(从 Amazon EC2 网络服务器到 RDS 实例。)
我们有一个之前工作的 LOAD DATA INFILE,现在需要添加 LOCAL 关键字,因为数据库将位于与 Web 服务器不同的机器上。
在我的开发服务器上测试,结果它不起作用:
- 我仍然可以像以前一样从 php 加载数据输入文件
- 我可以从 mysql 命令行加载 DATA LOCAL INFILE(使用 --local_infile=1)
- 我无法从 php 加载数据本地文件。
在这两个有效的事情之间,它排除了:
- sql 或 php 代码的问题
- 上传文件的问题,包括语法和文件权限
- mysql服务器设置问题
我得到的错误是: ERROR 1148 (42000): The used command is not allowed with this MySQL version(如果我不使用 --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)的人都知道让它工作的诀窍吗?