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

MySQL-5.0.27-win32 の日本語化についての質問です。日本語コードの取り扱いについて失敗しているようなので、その問題の解決法について教えてください。


MySQL を多言語環境でインストールして、以下のページを参考に MySQL.ini を変更しました。
http://y-kit.jp/saba/xp/mysqluser.htm
http://q.hatena.ne.jp/1151852296

つづいて上記のページを参考に総務省の持つ郵便番号データ(CSV)をタブ区切りテキストに変換して MySQL にデータをロードしようとするとエラーになります。
> ERROR 1406 (22001): Data too long for column 'pref' at row 1

この「県」データには漢字データ(e.g.東京都)が入っています。念のためアルファベットでデータを作って INSERT したところ、正常に動きました。

こういった場合どんな設定でミスしていると思われますか? お手数ですが宜しくお願いします。

●質問者: 大蘇 蓮風
●カテゴリ:コンピュータ
✍キーワード:AT CSV MySQL Win32 アルファベット
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● b-wind
●35ポイント

Data too long(データが長すぎます)なので、あんまり日本語と関係ないような。


どんなテーブルを作ってどんなデータをどうやって入れようとしているのか、もう少し詳細にしていただけると回答が得られやすいと思います。

◎質問者からの返答

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

テーブル定義は件の HP を参考にしたもので以下の通りです。

mysql> show fields from jpzipcode;

+---------+------+------+-----+---------+-------+

Field Type Null Key Default Extra

+---------+------+------+-----+---------+-------+

oldpost text YES NULL
newpost text NO
pref text YES NULL
area text YES NULL
addr text NO

+---------+------+------+-----+---------+-------+

私は DB に不慣れなのですが、text 型でフィールドを定義している以上、「東京都」程度の短い文字列でエラーを起こすのは納得が行きません。またアルファベットのデータで20文字ほどのデータをインサートしてみたところ成功しました。ですからマルチ・バイトがらみのエラーと推測しているのですが如何でしょうか?


2 ● b-wind
●35ポイント

コマンドプロンプトからの実行と考えてよろしいでしょうか?

コマンドプロンプト自体の扱える文字コードは Shift_JIS のみとなっていますので文字コードの変換が必要です、SQL 実行前に

SET NAMES 'sjis';

を実行し、その後インサートしてみてはどうでしょうか?

◎質問者からの返答

おかげさまで単独文での INSERT には成功しました。


mysql> insert into jpzipcode

-> (oldpost, newpost, pref, area, addr)

-> VALUES('154', '154-0002', '東京都', 'Setagaya', 'Simouma');

Query OK, 1 row affected (0.06 sec)

mysql> select * from jpzipcode;

+---------+----------+---------------------+----------+---------+

oldpost newpost pref area addr

+---------+----------+---------------------+----------+---------+

154 154-0002 Tokyo Setagaya Simouma
154 154-0002 Tokyo-to Metropolis Setagaya Simouma
154 154-0002 東京都 Setagaya Simouma

+---------+----------+---------------------+----------+---------+

3 rows in set (0.00 sec)


しかしファイルからのインサートには失敗します。


mysql> load data infile 'c:/13tokyo.txt'

-> into table jpzipcode;

ERROR 1406 (22001): Data too long for column 'pref' at row 1


となります。この“c:/13tokyo.txt”の内容は


> 102102-0072東京都千代田区飯田


のようなタブ区切りフォーマットです。文字コードについても念のため SJIS にコンヴァートしました(Meadow を使って)。

いろいろお手数をお掛けしてますが、どうしたら良いのでしょう?

関連質問


●質問をもっと探す●



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