さくらインターネットのサーバー上のPHPスクリプトから、

CSVファイルをLOAD DATA LOCAL INFILEしようと考えています。

$s = mysql_connect('mysqlxxx.db.sakura.ne.jp', 'user', 'password', 128);
mysql_select_db("user", $s);

$sql = sprintf("LOAD DATA LOCAL INFILE '%s' REPLACE INTO TABLE ItemInfo
        FIELDS TERMINATED BY ','",
        mysql_real_escape_string('/home/user/www/folder/File.csv')
       );
$query = mysql_query($sql);

LOAD DATA LOCALの処理の権限を有効にするために
mysql_connect関数のパラメータclient_flags の値を128にして実行したのですが、
以下のエラーになってしまいます。

1148: The used command is not allowed with this MySQL version

どなたか、原因・解決法をご教授いただきたいです。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/03/03 21:04:08
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:shak No.1

回答回数84ベストアンサー獲得回数2

ポイント60pt

$client_flagsは第五引数ですぞ!

第四引数の$new_link=trueの入れ忘れが原因かと。

mysql_connect('mysqlxxx.db.sakura.ne.jp', 'user', 'password', true, 128);

でどうでしょ。

id:Cside

ありがとうございます!どうやらそのようでした。

エラーメッセージが1148 → 2027: Malformed packet に変わりました。

また新たな問題が出現した感ですが、ひとまずmysql_connect関数の誤った書き方は解消です。

2010/03/03 01:42:38
  • id:tobeoscontinue
    似た質問が
    http://q.hatena.ne.jp/1240681560
  • id:Cside
    どうもです。
    ここで指摘されているCSVの改行コード、区切り等もすべて試してみたのですが、同じエラー2027: Malformed packetのままでした。

    友人に同じスクリプトを試してもらったところ、正常にLOAD DATA LOCAL INFILEできました。
    それで私のサーバーでは2027: Malformed packetが出るということは、サーバー上の問題なのかな?さくらインターネットに問い合わせてdbサーバーを変えてもらうかな?と検討中です。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません