• ベストアンサー

MySQLでデータベースにデータinsert時のエラー。

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column '******' at row 1 とエラーがでて解決できません。どこがおかしいのでしょうか?(JAVA初心者ですいません。)

  • Java
  • 回答数5
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • newbie123
  • ベストアンサー率100% (1/1)
回答No.5

私の場合ですが、データベース接続直後に "SET NAMES SJIS;" を実行すれば正常にINSERT出来ました。 なお、テーブルの作成時に文字コードをSJISにしておく必要があります。私は(cp932 -- SJIS for Windows Japanese)にしました。 後からテーブルの文字コードを修正してもうまくいきませんでした。

その他の回答 (4)

回答No.4

ANO.3の方の補足として、ANO.3の回答は文字データがSJISであることを 前提として話されていると思います。 ANO.3の条件を満たしているのにまだ同じエラーが発生する場合、 データの登録処理を行なうときの文字コード、テーブルの文字コードの設定を 確認してみて下さい。 参考URLはMySQLの文字コード設定について書かれたページです。

参考URL:
http://www.javadrive.jp/mysql/control/index1.html
  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.3

全角2バイト文字は、varcharで指定する桁数の2倍のサイズが必要ではないですか? 例えばvarchar(4)に”あいうえ”は入りません。 varchar(8)が必要です。 という事ではないですか?

回答No.2

まずは質問の仕方がおかしいかと思います。 MySQLのバージョンも書かない、環境も書かない、 どんなデータを入れようとしたのか、カラムの定義はなんなのか。 そもそも、どんな処理を行なおうとしたのかも分かりません。 あまりに情報不足です。 これではANO.1のように考えない人の方が僕は不思議に思います。 思いつく限りを全部あげていきます。思い当たる物があると良いのですが… ○全角と半角の間違い ○SQLの環境とデータを投入する処理の文字コードが異なる ○区切りに設定している改行コードが\rなのに対し、データが\r\nの改行区切りである うーん、あまり思いつかないですね…

tonkiti
質問者

補足

環境はwindowsxp エディターはeclipse3.1 mysqlは5.0.16です。 処理は、テーブルにデータを登録しようとしているところです。 エラーの部分はvarcharで定義していて、日本語を入れています。半角英数字のデータは登録できました。 よろしくお願いします。

  • PCFREAK
  • ベストアンサー率51% (417/805)
回答No.1

Data too long ですから、MySQLのInsertしようとしているテーブルのカラム定義より長い桁の値をセットしてしまっているのではないですか? 例えばchar(1)のカラムに2桁の文字をInsertしようとしている、とかです。

tonkiti
質問者

補足

テーブルのカラム定義より長い桁の値をセットしてしまっていることは、ありません。 ちゃんとそれは、しています。

関連するQ&A

  • MySQL と JDBCで・・・

    質問させてください。 windows98に ・j2sdk-1_4_1_07-windows-i586.exe ・mysql-4.0.25-win32.zip ・mysql-connector-java-3.1.10.zip をダウンロードしました。 環境変数を設定し javaソースコードを作成しました。 コンパイルは出来たのですが、実行すると コマンドプロンプトに java.sql.SQLException: Access denied for user: '@localhost' to database 'hellodb ' at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:770) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1228) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2544) at com.mysql.jdbc.Connection.<init>(Connection.java:1474) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :264) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:193) at HelloWorldJDBCMySQL.main(HelloWorldJDBCMySQL.java:15) と表示されてしまいます。 過去ログを見させていただきましたが自分の求める回答を見つけきれませんでした。 どなたかご教授のほど、よろしくお願いします。

  • eclipse 追加表示

    eclipseでメンテナンスを作ってるんですが追加ができないんです ボタンを押したらこんなのがでてきたんですがどうしてでしょうか eclipse 3.2,tomcat6,mysql javax.servlet.ServletException: java.sql.SQLException: Incorrect integer value: 'null' for column 'id' at row 1 tuika1.doPost(tuika1.java:111) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803) 原因 java.sql.SQLException: Incorrect integer value: 'null' for column 'id' at row 1 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1056) com.mysql.jdbc.SQLError.createSQLException(SQLError.java:957) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3376) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3308) com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1837) com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1961) com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2537) com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1564) com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1485) tuika1.doPost(tuika1.java:75) javax.servlet.http.HttpServlet.service(HttpServlet.java:710) javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  • MySQLを利用したサーブレットの実行時のエラーについて。

    ローカルマシンにMySQLをインストールし、サーブレットでアクセスするプログラムを作っています。MySQLの動作は確認済みです。 MySQLのPATHとJDBCドライバのCLATHPASSの設定もしました。サーブレットのソースはWEB上のサンプルをそのまま利用しています。 DBの設定部分のソース↓ Class.forName("org.gjt.mm.mysql.Driver"); Connection con = DriverManager.getConnection"jdbc:mysql:///hellodb"); PATH↓ C:\Program Files\mysql\bin CLATHPASS↓ C:\j2sdk1.4.0\jre\lib\ext\mysql-connector-java-3.0.2-beta-bin.jar エラー内容は以下の通りです。 --------------------------------------------------------------------- java.sql.SQLException: Column 'NO' not found. at com.mysql.jdbc.ResultSet.findColumn(ResultSet.java:2862) at com.mysql.jdbc.ResultSet.getInt(ResultSet.java:1338) at HelloWorldJDBCMySQL.main(HelloWorldJDBCMySQL.java:24) --------------------------------------------------------------------- DBへアクセスできていないと思うのですが、自分で調べた限りでは前述の設定以外の方法が調べきれませんでした。 お力添えお願いいたします。

  • MySQLへ途中から接続できなくなる

    MySQL 5.5.27, mysql-connector-java 5.1.12を用いて,MySQLにアクセスしています. しばらくは動いているのですが,時間が経つと,以下のようなエラーを吐いて止まってしまいます. 関連するコードは以下の通りです. https://gist.github.com/4243576 どなたか解決法が分かる方がいらっしゃいましたら,よろしくお願い致します. ----以下エラーコードです (行数はコードと対応しておりません. エラーコードの39行目に当たるのがgistの35行目, 287行目に当たるのがgistの46行目 291行目に当たるのがgistの50行目 になります.) com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link fai lure The last packet sent successfully to the server was 0 milliseconds ago. The driv er has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou rce) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1 122) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2260) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:787) at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49) at sun.reflect.GeneratedConstructorAccessor10.newInstance(Unknown Source ) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou rce) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:357) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :285) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at botan.DBManager.connect(DBManager.java:39) at botan.DBManager.insertStatusIdsLong(DBManager.java:287) Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communicatio ns link failure The last packet sent successfully to the server was 0 milliseconds ago. The driv er has not received any packets from the server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou rce) at java.lang.reflect.Constructor.newInstance(Unknown Source) at com.mysql.jdbc.Util.handleNewInstance(Util.java:409) at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1 122) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2181) ... 16 more Caused by: java.net.SocketException: No buffer space available (maximum connecti ons reached?): connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(Unknown Source) at java.net.PlainSocketImpl.connectToAddress(Unknown Source) at java.net.PlainSocketImpl.connect(Unknown Source) at java.net.SocksSocketImpl.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.connect(Unknown Source) at java.net.Socket.<init>(Unknown Source) at java.net.Socket.<init>(Unknown Source) at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.ja va:256) at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:293) ... 17 more Exception in thread "main" java.lang.NullPointerException at botan.DBManager.insertStatusIdsLong(DBManager.java:291)

  • phpmyadminで種別の値が変更できない

    教えてください。 phpmyadminであるフィールドの長さ/値を変更しようと保存実行すると #1406 - Data too long for column 'NAME' at row 1 とエラーが出て修正がききません。 何が原因でしょうか? OS:xp mysql:5 php:4.4.7

  • MySQLのコマンドクライアントの文字化けに困っています。

    WindowsXP PHP 5.1.2 Apache 2.0.55 mysql 4.1.7 全てインストールして、とりあえずWindowsXP上で動かしています。 my.iniで default-character-set=sjis とすると、下記エラーで日本語のデータがINSERT文で入力できなくなります。 ERROR 1406 (22001): Data too long for column 'unam' at row 1 default-character-set=latin1 とすると、日本語でINSERTもできて、コマンドクライアント上でも正しく表示 されるのですが、PHPでデータを呼び出すと文字化けしてしまいます。 解決方法をよろしくお願いします。

  • JDBCに初めて挑戦しようとしたのですが。

    「JAVA+MySQL+Tomcatで始めるWebアプリケーション開発入門」という本でJDBCに初めて挑戦しようとしたのですが、下記のようなエラーが出てうまく実行できませんでした。 java.sql.SQLException: Access denied for user: 'Mulder@localhost' (Using passwor d: YES) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2928) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:771) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1229) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2558) at com.mysql.jdbc.Connection.<init>(Connection.java:1485) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :266) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at JdbcTest.main(JdbcTest.java:12) Exception in thread "main" java.lang.NullPointerException at JdbcTest.main(JdbcTest.java:24) 原因など、わかる方がいたら教えていただきたいです。 よろしくお願いします。

    • ベストアンサー
    • Java
  • javaでMySQLのデータ検索

    以下のサイトでただいま勉強しています。環境はMySQL4.0.15です。 http://msugai.fc2web.com/java/JDBC/mmMySQL.html ●JDBC ソースコードのところでつまづいています。 javaの実行 C:\java>java JdbcSample Exception: com.mysql.jdbc.Driver java.lang.ClassNotFoundException: com.mysql.jdbc.Driver  … // 1.JDBC Driver の登録 // 2.データベースへの接続 のあたりでエラーが発生している状態です。データベースの接続はAccess環境なら『コントロールパネル』→『管理ツール』→『データソース(ODBC)』で使用するデータベースを設定します。MySQLもこのあたりの設定が必要なんでしょうか? ●Accessの場合 Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection Con = DriverManager.getConnection("jdbc:odbc:設定したデータベース名"); アドバイスお願いします。

  • 日本語TSVファイルのLOAD DATA INFILE が失敗

    日本語(EUCJP)を含むタブ区切りテキストのインポートに失敗しており、 行き詰ってしまいました。考えられる原因等お気付きありましたら、 ご指摘頂ければ助かります。 尚、my.cnfで[mysql], [mysqld], [mysqlimport], [mysqldump]は、 default-character-set=ujis で設定しています。 mysql> select version(); +---------------------+ | version() | +---------------------+ | 5.0.27-standard-log | +---------------------+ 1 row in set (0.00 sec) mysql> LOAD DATA INFILE "/hoge/hoge.csv" INTO TABLE test; Query OK, 5 rows affected, 15 warnings (0.00 sec) Records: 5 Deleted: 0 Skipped: 0 Warnings: 15 mysql> show warnings; +---------+------+-----------------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------------+ | Warning | 1265 | Data truncated for column 'mycolumn1' at row 1| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 1| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 1| | Warning | 1265 | Data truncated for column 'mycolumn1' at row 2| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 2| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 2| | Warning | 1265 | Data truncated for column 'mycolumn1' at row 3| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 3| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 3| | Warning | 1265 | Data truncated for column 'mycolumn1' at row 4| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 4| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 4| | Warning | 1265 | Data truncated for column 'mycolumn1' at row 5| | Warning | 1265 | Data truncated for column 'mycolumn2' at row 5| | Warning | 1265 | Data truncated for column 'mycolumn3' at row 5| +---------+------+-----------------------------------------------+ 15 rows in set (0.01 sec) こんな状態です。ちなみに、mycolumn1,2,3のカラムは、 日本語を格納する為のカラムで、varchar(255), text型です。 他のカラムには英数字データが入るのですが、そちらは成功しています。 上記Warning文を見た限りでは、MySQLによりデータが加工されている ようですが。。。。 この問題を解決する為に、他に設定するべきことや、 必要なコマンドがありますでしょうか? またコマンドラインからの、mysqlimportも同様に失敗しました。 日本語テキストのインポートによるテーブルデータ格納は MySQLの仕様的に可能かと思われますが、上記問題がおきてしまいました。 お気付きありましたら、ご指摘いただけたら助かります。

  • Data too long for column 'id' at row 1とエラー

    MySQLを3.27から2.0に変えたのですが、 Data too long for column 'id' at row 1 というエラーが表示されて困っています。 エラー 実行した SQL: ALTER TABLE `account` CHANGE `id` `id` VARCHAR( 3 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , CHANGE `pass` `pass` VARCHAR( 3 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , CHANGE `mail` `mail` VARCHAR( 16 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , CHANGE `name` `name` VARCHAR( 6 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL , CHANGE `host` `host` VARCHAR( 10 ) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL MySQLのメッセージ: #1406 - Data too long for column 'id' at row 1 いきなりでどう対処していいか困っています。 どこを変更すればよいのでしょうか・・・?

専門家に質問してみよう