人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

さくらインターネットのサーバーから、
CSVファイルをLOAD DATA INFILEするために、以下のPHPスクリプトを作りました。

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

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

私のサーバーでは『2027: Malformed packet』エラーが出ましたが、
友人のさくらサーバー上では、処理に成功しました。
(私のサーバーのDBのバージョンは5で、友人が4です。)

友人のさくらサーバーでは処理に成功したことから、
私のサーバーで出た2027: Malformed packetエラーの原因はCSVファイルの形式等ではなく
もっと基幹的な部分にあるとおもうのですが、
どなたか、原因・解決法をご教授いただきたいです。

●質問者: Cside
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:.DB CSV dB FIELDS HOME
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● GreenStar
●40ポイント

文字コードの違いを見てみると幸せになれるかも?

show variables like "char%"

4と5だとLOAD DATAの挙動がちがうからマニュアルも見て!!

http://dev.mysql.com/doc/refman/4.1/ja/load-data.html

http://dev.mysql.com/doc/refman/5.1/ja/load-data.html

こんなことしか書けなくて、ごめんなさい。


2 ● km1967
●20ポイント

$sql = "LOAD DATA LOCAL INFILE '/home/user/www/File.csv' REPLACE

INTO TABLE `ItemInfo` FIELDS TERMINATED BY ','"";

ここが途中で改行しているため。

1行で書かなければいけない

◎質問者からの返答

回答ありがとうございます。

1行にしましたが、同じエラーのままのようです。


3 ● bayan
●20ポイント

こちらは参考になりますか?

http://d.hatena.ne.jp/Cside/20100227/p1

◎質問者からの返答

これ書いたの、私ですね…w

これはsshから実行した話ですね。

sshからは、-enable-local-infileオプションでLOCAL INFILEの権限を取って実行したら成功しました。

今回のPHPスクリプトでは、LOCAL INFILEの権限をmysql_connectの$client_flagsを128(CLIENT_LOCAL_FILES)にすることで取っています。

しかし、それでも起きてるエラーなのですよね。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ