mysql data too long for column xxx解決方案

來源:互聯網
上載者:User

問題:java.sql.SQLException: Data truncation: Data too long for column 'content' at row 1 Query

遇到這個問題搜集的網上的一些解決方案:

第一種解決辦法:

出自:http://www.blogjava.net/zoninge/archive/2009/04/15/265663.html感謝博主!
在頁面中向mysql5.0插入中文資料時提示失敗,將sql語句複製到管理器中,資料庫提示data too long for column "title",我改為一個漢字,還是提示同樣的資訊,換成英文再試一下,正常,應該是字元集除了問題,但是資料庫在建立的時候就選擇的DEFAULT_CHARSET,應該是欄位的問題。
將MySQL安裝目錄下的my.ini檔案中的字元集配置如下(修改完之後,最好重啟一下MySQL服務):
    [mysql]
    default-character-set=gbk
    [mysqld]
    default-character-set=gbk
或者在my.ini裡找到
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”
把其中的
STRICT_TRANS_TABLES,
去掉,然後重啟mysql就ok了
    將表和欄位的字元集屬性都改成gbk。
    在每一次MySqlCommand Execute語句時,如果SQL語句或者參數中包含中文,或者是返回的記錄集中有中文(指Select的查詢語句),就在這個Execute的SQL語句之前加一個SET NAMES GBK;。

第二種解決方案:

http://www.cnblogs.com/amboyna/archive/2008/04/21/1163110.html
感謝博主!

data too long for column xxx解決方案

Update:mysql5在phpmyadmin無法串連時執行的語句:
SET PASSWORD FOR ‘root’@'localhost’ = OLD_PASSWORD(’[newpassword]‘);

剛才在匯入資料的時候,navicat報錯:
Data too long for column ‘ip’ at row 1
提示資料對於ip欄位太長

如果資料類型不正確,也會出錯,而不像4.*那樣自動轉換:
sendQuery:Incorrect datetime value: ‘未知’ for column ‘date’ at row 1

如果是資料x (int 11)類型的可能有些奇怪:
insert into a (x) values (’a')
出現:
Out of range value adjusted for column ‘x’ at row 1

insert into a (x) values (’11a’)
出現:
Data truncated for column ‘x’ at row 1

解決辦法:
在my.ini裡找到
sql-mode=”STRICT_TRANS_TABLES,NO_AUTO_Create_USER,NO_ENGINE_SUBSTITUTION”
把其中的
STRICT_TRANS_TABLES,
去掉,然後重啟mysql就ok了
參考博主轉自:Trackback:[url] http://tb.blog.csdn.net/TrackBack.aspx?PostId=2032186[/url]

關於MySQL5中varchar欄位類型的長度定義:

原文稍作了截取:
http://hi.baidu.com/mcspring/blog/item/63f0dea25e8e7baacbefd0ad.html

藉此機會重新仔細讀了一下MySQL5的文檔,其中對varchar欄位類型這樣描述:varchar(m) 變長字串。M 表示最大列長度。M的範圍是0到65,535。(VARCHAR的最大實際長度由最長的行的大小和使用的字元集確定,最大有效長度是65,532位元組)。

為何會這般變換?真是感覺MySQL的手冊做的太不友好了,因為你要仔細的繼續往下讀才會發現這段描述:MySQL 5.1遵從標準SQL規範,並且不刪除VARCHAR值的尾部空格。VARCHAR儲存時用一個位元組或兩個位元組長的首碼+資料。如果VARCHAR列聲明的長度大於255,長度首碼是兩個位元組。

好了,貌似懂了一點。但具體他說的長度大於255時使用2個位元組長度首碼,小學減法題:65535 - 2 = 65533啊。不知道這些大牛如何計算的,暫且保留疑問吧?

註:我測試了一下使用UTF8編碼,varchar的最大長度為21854位元組。
------------------------------------------------------------------
可能人品不好 上面都沒有解決我的問題。我把資料類型換成了longtext  長度不用設定就ok了

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.