- 締切済み
insertを用いてテーブルにレコードを追加することができるのにもかか
insertを用いてテーブルにレコードを追加することができるのにもかかわらず、load data infile を用いるとerror1366と表示されてしまいます。解決方法を教えてください。 Windows7 mysqlは最新版を使っています。 インストールしたそのままの状態だと、insertを用いて日本語を挿入しようとするとerror 1366と出てしまってましたが、my.iniを書き換えることによってinsert table1 values (1,'ああ');といった操作でエラーが出ることはなくなりました。 しかしcsvファイルをload data infileを用いてインポートしようとすると、またerror 1366が出てしまいました。 インポートしようとしたファイルには日本語が書かれています。 英字だけのファイルを同様にインポートすると、エラーは出ませんでした。 <table1> id int(15) name varchar(255) 1,a 2,b 3,asdf … はインポート可能 。また insert table1 values (1,'あ'); も正常に動作。 1,あ 2,い … をインポートするとエラー。 これができないと先に進めません・・・ ご教授お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- spieder
- ベストアンサー率59% (13/22)
マルチバイトなキャラクターセットのファイルをLOAD DATAで読み込む場合、LOAD DATA文に文字コードを指定しないとうまく読み込まない場合があります。 MySQLの日本語マニュアルには文字コードを指定する部分に関して記載がありませんので、英語版のほうのマニュアルのURLを記載しておきます。
- chukenkenkou
- ベストアンサー率43% (833/1926)
>mysqlは最新版を使って 最低限、MySQL 5.0とかMySQL 5.1レベルまでは、具体的に提示するようにしてください。 また、安定バージョンでなく開発途上のものだと、MySQL 5.1.xxで「仕様変更した」、「バグ修正した」といったことも実際にあったりしますので、より具体的なバージョン番号を提示するようにしてください。 > my.iniを書き換えることによって MySQLの文字コードの設定は、サーバ、データベース、クライアント別にあります。 実際にどういう設定が有効になっているか、確認できませんか? SQLが入力できる状態で、 SHOW VARIABLES LIKE '%char%' で表示させてみてください。 >insertを用いて日本語を挿入 >load data infileを用いてインポートしようと insertは、MySQL Command Line Clientから直接入力しているのでしょうか? load data infileも、同じですか? もし違うクライアントソフトから実行しているなら、双方で SHOW VARIABLES の結果を確認してください。
- angband
- ベストアンサー率51% (86/168)
推測に過ぎませんが、テーブルのnameフィールドの文字コードと データファイルの文字コードが違うのではないでしょうか。 MySQLの管理ツールは何か使われてますか?
補足
回答ありがとうございます。 説明不足で申し訳ありません。 管理ツールはworkbenchを使っています。 nameフィールドの文字コードはworkbenchで、 データファイルはTeraPadで確認しましたが、両方sjis となっていました。 なぜ読み込めないのでしょうか… 引き続き回答お待ちしております。