2012-11-26 128 views

回答

7

這似乎很明顯,它是。您顯然嘗試插入或更新一行的'column_name'列的值大於可放入所述列的值。

例如,如果是CHAR或VARCHAR,則可能有一個字符串比列的已定義大小更長。

您的解決此問題的選擇也很明顯 - 要麼確保您存儲的數據不大於列(可能需要在存儲它們之前截斷較長的字符串),或者增加數據庫列的大小。

+0

,如果它是一個文本字段? – vipin8169

3

在我的情況下上傳的數據中包含引號(」和「)。這就是爲什麼我讓你上面提到的相同的異常。去除內成功插入到表中的數據的引號之後。

4

如何在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. 
0

我在春天引導數據JPA應用程序面臨同樣的問題,當我要插入的圖像文件中的數據基地爲字節它給了我同樣的錯誤。

經過很多R & D我發現像下面的解決方案。

我在下面一行在我application.properties文件並解決

spring.datasource.url=jdbc:mysql://localhost:3306/conweb?sessionVariables=sql_mode='NO_ENGINE_SUBSTITUTION'&jdbcCompliantTruncation=false 

希望這將有助於別人。

0

出現此錯誤是因爲您試圖插入到列中的數據大小過大。

解決方案 - 列大小更改爲max.Assuming你列的類型是VARCHAR,那麼在MySQL的

ALTER TABLE table_name CHANGE COLUMN col_name col_name VARCHAR(1000); //assuming 1000 is enough 
相關問題