データベースをウェブサーバーから別のサーバーに移動します(Amazon EC2ウェブサーバーからRDSインスタンスに)。
以前はLOADDATAINFILEが機能していましたが、データベースがWebサーバーとは別のマシンにあるため、LOCALキーワードを追加する必要があります。
私の開発サーバーでテストしたところ、機能しないことがわかりました。
- 私はまだphpからデータ入力をロードすることができます
- mysqlコマンドラインからDATALOCALINFILEをロードできます(--local_infile = 1を使用)
- PHPからDATALOCALINFILEを読み込めません。
動作するこれらの2つのことの間で、それは除外します:
- SQLまたはPHPコードの問題
- 構文やファイルのアクセス許可など、アップロードファイルに関する問題
- mysqlサーバー設定の問題
私が得るエラーは次のとおりです:エラー1148(42000):使用されたコマンドはこのMySQLバージョンでは許可されていません(--local_infile = 1を使用しない場合、mysqlコマンドラインからそのエラーが発生します)
関連情報の他のいくつかのビット:
- Ubuntu 12.04、mysql 5.5.24、php 5.3.10
- 私はphpのmysql_connectを使用しています(mysqliをサポートしていないFacebookのhiphopコンパイラを使用することを計画しているため、mysqliの代わりに)。
そのため、connectコマンドには追加のフラグセットが必要です。
mysql_connect($dbHost, $dbUser, $dbPass, false, 128);
- phpinfo()を使用して確認しました
mysql.allow_local_infile = On
- Amazon RDSで試してみましたが(開発サーバーで問題が発生した場合)、そこでも機能しません。(local_infileパラメーターがオンになっている場合。)
私が試したことのないことについて読んだ唯一のことは、ローカル入力を許可するためにフラグをオンにして開発サーバーでmysqlサーバーをコンパイルすることです...しかし、開発サーバーでそれを機能させても、 AmazonRDSを手伝ってください。(それに加えて、LOAD DATA LOCAL INFILEはmysqlコマンドラインから機能します。)
特にphpのmysql_connect()に問題があるようです。
LOAD DATA LOCAL INFILE(おそらくAmazon RDSから)を使用して、これを機能させるための秘訣を知っている人はいますか?