その他 > その他 > MYSQLで登録エラー#1406 - Data too long for column |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
Wsm |
投稿日時: 2007/10/2 13:58
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/19 居住地: 投稿: 20 |
MYSQLで登録エラー#1406 - Data too long for column EC-CUBEを構築しまして
大量のマスタのデータを一括でインサートしたく MySQLのエディターを使っていますが、、 phpMyAdmin、Navicat、MySQL Administrator と Query Browser(http://www-jp.mysql.com/products/tools/) どうもシステムから登録された漢字、カタカナなど登録内容が EUC-JPでEncodingされなく文字化けしてしまうのです。 クエリーでインサートしようとしても下記のようなエラーが 出てしまいます。 #1406 - Data too long for column at row 1 何か設定が足りないでしょうか。 皆さんはどんなMySQLエディターってどんなのを使われてますか。 |
guestkun |
投稿日時: 2007/10/4 21:10
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/26 居住地: 関西 投稿: 28 |
Re: MYSQLで登録エラー#1406 - Data too long for column このエラーは、データベースの文字コードの問題ではないでしょうか。
マスタデータと、データベースの内部エンコードを一度確認してみるといいかもしれません。 また、MySQLエディターと一般的に呼ばれているのかどうかわかりませんが、私はインサート文のマスタデータをコンソールから標準入力して読み込ませています。 autocommit を無効にすれば登録も速いですよ。 (例) ユーザー名とDB名がeccubeの場合 mysql -ueccube -p -hlocalhost eccube < insert.sql 引用: SET AUTOCOMMIT=0; INSERT 文を 1 つにして中身を入れ子にしても速いかもしれません。 phpMyAdminなど、Web経由だと、大量データの場合に遅くなるのはしかたないかもしれません。 |
Wsm |
投稿日時: 2007/10/15 17:41
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/19 居住地: 投稿: 20 |
Re: MYSQLで登録エラー#1406 - Data too long for column ご回答ありがとうございました。
>このエラーは、データベースの文字コードの問題ではないでしょうか。 >マスタデータと、データベースの内部エンコードを一度確認してみるといいかもしれません。 コンソールからマスタデータを確認しますと、、 mysql>SELECT * FROM テーブル名; 登録されたレコードが文字化けして見れます。 guestkun様がおっしゃるとおり、データベースの文字コードの問題だと思いますが、 調べたところ、phpMyAdminを使った場合 utf8_general_ciに統一変更してやることで、文字化け問題は解消で きましたが、コンソールのレコードビューした際も EC-CUBEシステムより登録された内容もphpMyAdminで参照すると文字化けされてしまいます。 コンソールで日本語がちゃんと見れて登録、更新が出来る方法を 教えていただけますか。 my.iniファイルの設定が default-character-set = utf8 になっているからでしょうか。 しかし、default-character-set = euc-jp に変えるとどうもMySQLが使えなくなり、、困っております。 |
guestkun |
投稿日時: 2007/10/15 22:43
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/26 居住地: 関西 投稿: 28 |
Re: MYSQLで登録エラー#1406 - Data too long for column MySQLのEUC-JPは下記の通りです。
default-character-set = ujis また、Windows の場合であれば、 mysqld(サーバーエンコーディング)を ujis、 mysql(クライアントエンコーディング)を sjis に したら挙動は変わりませんでしょうか? EC-CUBE のサイトの文字コード(普通にDLするとEUC-JP)は何で、 MySQL の DB の文字コード(mysqld)は何なのか。 OS は Windows なのか UNIX(Linux, FreeBSD)なのか。 もう少し環境を詳しく伝えてもらえれば、 解決に繋がるかもしれません。 |
Wsm |
投稿日時: 2007/10/16 12:11
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/19 居住地: 投稿: 20 |
Re: MYSQLで登録エラー#1406 - Data too long for column ご指導ありがとうございます。
開発環境の説明が足りなかったんです。 大変申し訳ございません。 次のような設定にしております。 OS→開発環境 WindowsXP サーバ環境 Windows Server 2003 IISで動かしております。 EC-CUBEバージョン 1.3.4 PHP Version 5.1.2 DBバージョン MySQL Version 5.0.18 PHP.ini 設定****************************************** EC|CUBE マニュアルサイトからの指示とおりしております。 日本語(EUC-JP)環境でのphp.ini設定 mbstring.language Japanese mbstring.http_input EUC-JP mbstring.http_output EUC-JP auto_detect_line_endings on output_handler mb_output_handler default_charset EUC-JP mbstring.internal_encoding EUC-JP mbstring.encoding_translation on mbstring.detect_order auto mbstring.substitute_character none magic_quotes_gpc off my.ini設定*********************************************** >mysqld(サーバーエンコーディング)を ujis、 >mysql(クライアントエンコーディング)を sjis 教えてくださった方法で変えて見ましたが 下記のような書き方でよろしかったでしょうか。 [mysqld] default-character-set = ujis init_connect=SET NAMES ujis language=Japanese skip-innodb skip-bdb #skip-locking #skip-networking #shared-memory old_passwords=1 connect_timeout = 10 max_connections = 3000 wait_timeout = 60 key_buffer = 256M max_allowed_packet = 1M table_cache = 6000 sort_buffer_size = 1M read_buffer_size = 1M myisam_sort_buffer_size = 64M thread_cache = 8 query_cache_size= 16M thread_concurrency = 4 [client] default-character-set=sjis init_connect=SET NAMES sjis language=Japanese [mysqldump] default-character-set=sjis init_connect=SET NAMES sjis language=Japanese しかし、コンソールでの文字化けは解消されておりません。 ![]() |
guestkun |
投稿日時: 2007/10/16 12:25
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/26 居住地: 関西 投稿: 28 |
Re: MYSQLで登録エラー#1406 - Data too long for column 環境の説明ありがとうございます。
まず、今の環境の状態で、会員登録や商品登録をすると ブラウザ上ではどうなりますでしょうか? (日本語は文字化けはしますか?) その後、PHPMyAdmin で euc を選択したら、 上記で登録した日本語は文字化けしますか? さらに、MySQL の my.ini で [mysql] を default-character-set=ujis にしたら、 上記で登録した日本語は文字化けしますか? (ここは、コンソールのターミナルの文字コードも関係します) まずは、何が OK で、何がダメなのかを洗い出して、 順番に解決できるといいと思います。 |
Wsm |
投稿日時: 2007/10/16 15:13
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/19 居住地: 投稿: 20 |
Re: MYSQLで登録エラー#1406 - Data too long for column ご丁寧にありがとうございます。
>まず、今の環境の状態で、会員登録や商品登録をすると >ブラウザ上ではどうなりますでしょうか? >(日本語は文字化けはしますか?) ○ 文字化けなくちゃんと表示されています。 >その後、PHPMyAdmin で euc を選択したら、 >上記で登録した日本語は文字化けしますか? × 文字化けしています。 >さらに、MySQL の my.ini で [mysql] を >default-character-set=ujis にしたら、 >上記で登録した日本語は文字化けしますか? >(ここは、コンソールのターミナルの文字コードも関係します) EX) 漢字、カタカナは「?????????」と表示されております。 × 文字化けしています。 ちなみにコンソールとPHPMyAdminから日本語をインサートすると #1406 - Data too long for column 'm_name' at row 1 上記のエラー出て登録できません。 |
guestkun |
投稿日時: 2007/10/16 16:51
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/26 居住地: 関西 投稿: 28 |
Re: MYSQLで登録エラー#1406 - Data too long for column phpMyAdmin は使ってないので最新版(2.11.1.1)を入れてみました。
また、EC-CUBE も入れ直してみました。 phpMyAdmin で EC-CUBE の DB の構造を見てみますと、 各テーブルとも照合順序が ujis_japanese_ci になっています。 日本語も問題なく表示されます。 また、エクスポート・インポートも問題ありません。 また、コンソール上(DOSプロンプトなど)から 確認してみたところ、こちらも日本語は表示されます。 私の my.ini は以下の通りです。
|
ゲスト |
投稿日時: 2007/10/16 20:48
対応状況: −−−
|
Re: MYSQLで登録エラー#1406 - Data too long for column 私のために環境も直して頂いて本当に感謝します。
教えて頂いたことを試してみました。 my.iniファイルも修正致しました。 一部のファイルをおっしゃったとおり修正致しましたら ○ ![]() ○ ![]() × ![]() 文字化け! × ![]() |
|
guestkun |
投稿日時: 2007/10/16 21:52
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2007/9/26 居住地: 関西 投稿: 28 |
Re: MYSQLで登録エラー#1406 - Data too long for column 自宅で同じ環境を作り直してみました。
私の環境では、EC-CUBE からも phpMyAdmin からも 日本語の入力は問題ありません。 また、サイトでも問題なく表示できています。 (php.ini はゲスト様と同じ、my.ini は先ほど投稿したものです) もう一度、EC-CUBE をインストールしてみてはいかがでしょうか? 環境を固定してから、EC-CUBE をインストールした方がいいと思います。 ちなみに、編集確認したテーブルは、dtb_kiyaku です。 EC-CUBE(管理画面)、phpMyAdmin、コンソールの 3 箇所から 更新を行っても文字化けなどは起こりません。
|
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |