Mysql

MySQL varchar(255) 限制和異常

  • January 14, 2019

我在我的 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 個字元。

嘗試在數據庫中添加記錄目錄並檢查結果。

引用自:https://dba.stackexchange.com/questions/25254