Mysql
MySQL varchar(255) 限制和異常
我在我的 MySQL 數據庫中定義了一個列:
ALTER TABLE `my_table` CHANGE `desc` `desc` VARCHAR( 255 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
但是,當我從前端輸入超過 233 個字元的文本時,數據會被截斷。
將列的大小更改為 varchar(511) 沒有任何區別。
我使用 PHP 的
strlen()
函式計算了字元數,結果顯示為 233 個字元。為什麼 MySQL 這樣做,我怎樣才能保存完整的字元串?
MySQL 沒有將其削減為 233。問題可能出在您的保存方法中,該方法在數據到達 MySQL 之前將其削減到 233。
另外,不要忘記 233 限制不是字元限制,並且由於某些字元可能需要更多 han 1 字節來儲存,您可能會看到少於 233 個字元。
另外請確保 MySQL 伺服器中的數據確實儲存為 latin1,這可以通過以下方式完成:
show variables like 'char%';
您使用的是哪個版本的 MySQL?我的是 MySQL 5.5.16,它正在保存全文。
我創建了帶有 2 列 id 和 desc(varchar(100).
之後,我執行您的更改查詢,並在成功執行查詢後添加了兩條超過 255 個字元的記錄。
我的記錄顯示 255 個字元。
我假設您的 MySQL 版本不同,或者您的前端僅顯示 233 個字元。
嘗試在數據庫中添加記錄目錄並檢查結果。