- ベストアンサー
MySQLでデータベースにデータinsert時のエラー。
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column '******' at row 1 とエラーがでて解決できません。どこがおかしいのでしょうか?(JAVA初心者ですいません。)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
私の場合ですが、データベース接続直後に "SET NAMES SJIS;" を実行すれば正常にINSERT出来ました。 なお、テーブルの作成時に文字コードをSJISにしておく必要があります。私は(cp932 -- SJIS for Windows Japanese)にしました。 後からテーブルの文字コードを修正してもうまくいきませんでした。
その他の回答 (4)
- jack-amano
- ベストアンサー率61% (11/18)
ANO.3の方の補足として、ANO.3の回答は文字データがSJISであることを 前提として話されていると思います。 ANO.3の条件を満たしているのにまだ同じエラーが発生する場合、 データの登録処理を行なうときの文字コード、テーブルの文字コードの設定を 確認してみて下さい。 参考URLはMySQLの文字コード設定について書かれたページです。
- PCFREAK
- ベストアンサー率51% (417/805)
全角2バイト文字は、varcharで指定する桁数の2倍のサイズが必要ではないですか? 例えばvarchar(4)に”あいうえ”は入りません。 varchar(8)が必要です。 という事ではないですか?
- jack-amano
- ベストアンサー率61% (11/18)
まずは質問の仕方がおかしいかと思います。 MySQLのバージョンも書かない、環境も書かない、 どんなデータを入れようとしたのか、カラムの定義はなんなのか。 そもそも、どんな処理を行なおうとしたのかも分かりません。 あまりに情報不足です。 これではANO.1のように考えない人の方が僕は不思議に思います。 思いつく限りを全部あげていきます。思い当たる物があると良いのですが… ○全角と半角の間違い ○SQLの環境とデータを投入する処理の文字コードが異なる ○区切りに設定している改行コードが\rなのに対し、データが\r\nの改行区切りである うーん、あまり思いつかないですね…
- PCFREAK
- ベストアンサー率51% (417/805)
Data too long ですから、MySQLのInsertしようとしているテーブルのカラム定義より長い桁の値をセットしてしまっているのではないですか? 例えばchar(1)のカラムに2桁の文字をInsertしようとしている、とかです。
補足
テーブルのカラム定義より長い桁の値をセットしてしまっていることは、ありません。 ちゃんとそれは、しています。
補足
環境はwindowsxp エディターはeclipse3.1 mysqlは5.0.16です。 処理は、テーブルにデータを登録しようとしているところです。 エラーの部分はvarcharで定義していて、日本語を入れています。半角英数字のデータは登録できました。 よろしくお願いします。