我使用Java JDBC與MySQL和我得到這個錯誤:com.mysql.jdbc.MysqlDataTruncation:數據截斷:數據太長,列「列名」
com.mysql.jdbc.MysqlDataTruncation: Data truncation:
Data too long for column 'column_name'
如何解決這個問題?
我使用Java JDBC與MySQL和我得到這個錯誤:com.mysql.jdbc.MysqlDataTruncation:數據截斷:數據太長,列「列名」
com.mysql.jdbc.MysqlDataTruncation: Data truncation:
Data too long for column 'column_name'
如何解決這個問題?
這似乎很明顯,它是。您顯然嘗試插入或更新一行的'column_name'列的值大於可放入所述列的值。
例如,如果是CHAR或VARCHAR,則可能有一個字符串比列的已定義大小更長。
您的解決此問題的選擇也很明顯 - 要麼確保您存儲的數據不大於列(可能需要在存儲它們之前截斷較長的字符串),或者增加數據庫列的大小。
在我的情況下上傳的數據中包含引號(」和「)。這就是爲什麼我讓你上面提到的相同的異常。去除內成功插入到表中的數據的引號之後。
如何在MySQL終端重現此錯誤:
mysql> create table penguins(val CHAR(2));
Query OK, 0 rows affected (0.08 sec)
mysql> insert into penguins values("AB");
Query OK, 1 row affected (0.00 sec)
mysql> insert into penguins values("ABC");
Query OK, 1 row affected, 1 warning (0.01 sec)
mysql> show warnings;
+---------+------+------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------+
| Warning | 1265 | Data truncated for column 'val' at row 1 |
+---------+------+------------------------------------------+
1 row in set (0.00 sec)
這是你所得到的錯誤,但是在MySQL的終端展示它作爲一個警告,仍然插入你的行,只是默默截斷它
。MySQL的JDBC不是寬容的,並吐出一個硬錯誤,不會插入該行。
2解決方案
或者增加要插入的數據類型的能力,或減少你在那裏被放置內容的大小。
傳說增加你列的大小:
If you are using then use this
----------------- --------------
smallint int
int long
TEXT LONGTEXT
LONGTEXT CLOB
CLOB Store the content to disk, and save the filename in the db.
我在春天引導數據JPA應用程序面臨同樣的問題,當我要插入的圖像文件中的數據基地爲字節它給了我同樣的錯誤。
經過很多R & D我發現像下面的解決方案。
我在下面一行在我application.properties文件並解決
spring.datasource.url=jdbc:mysql://localhost:3306/conweb?sessionVariables=sql_mode='NO_ENGINE_SUBSTITUTION'&jdbcCompliantTruncation=false
希望這將有助於別人。
出現此錯誤是因爲您試圖插入到列中的數據大小過大。
解決方案 - 列大小更改爲max.Assuming你列的類型是VARCHAR,那麼在MySQL的
ALTER TABLE table_name CHANGE COLUMN col_name col_name VARCHAR(1000); //assuming 1000 is enough
,如果它是一個文本字段? – vipin8169