MySQL動態修改varchar長度的方法
雖然這種情況不應該發生,通常像我們關係型資料庫,我們應該是事先設計好,以後不能改動,但是由於之前工作的疏忽,其實說實話,也不僅僅是我個人的疏忽,主要是溝通上的原因,當然資料庫畢竟是我設計的,所以,還是自我批評一下。
說一下情況:MySQL欄位有個varchar值欄位設定的太短了,設定了30個,(我依稀記得varchar是可擴充套件的,當然現實並不容忍我的依稀),所以我只能找一個方法在保證資料庫資料不變的情況下,動態修改varchar欄位的長度,找了一段時間,終於讓我找到了。
?
1 |
alter table 表名 modify column 欄位名 varchar (數量);
|
這個功能還是比較強大的,但是還是提醒大家最好設計的時候就不要出現這種問題啊。
PS:mysql中的設定varchar長度問題
如果某一項中設定的是varchar(50)
那麼對英文當然是50
那麼對中文呢
utf-8的中文佔3個位元組
那麼,這個varchar(50)是不是隻能存16個漢字了?
mysql varchar(50) 不管中文 還是英文 都是存50個的
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位元組。
在mysql 5.0.45版本,資料庫編碼utf8下進行測試:varchar最長定義為21785。也就是說不論字母、數字、漢字,只能放21785個。
推想:varchar位元組最大65535,utf8編碼一個字元3個位元組65535/3=21785。
以上所述是小編給大家介紹的MySQL動態修改varchar長度的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對指令碼之家網站的支援
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3407/viewspace-2805577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 中 VARCHAR 最大長度及 CHAR 和 VARCHAR 的區別MySql
- 關於mysql varchar 型別的最大長度限制MySql型別
- mysql中varchar型別最大長度測試MySql型別
- mysql的varchar欄位最大長度真的是65535嗎?MySql
- DM8 varchar型別長度型別
- oracle小知識點1--varchar2的長度Oracle
- DEDEcms的tag標籤修改長度、語法及呼叫方法
- MySQL中欄位型別與合理的選擇欄位型別;int(11)最大長度是多少?varchar最大長度是多少?MySql型別
- MySQL中varchar和char定義長度是字元,與Oracle nvarchar2類似MySql字元Oracle
- oracle 修改表欄位的長度Oracle
- varchar後面是否定義長度,還是有區別的
- Mysql設定字元編碼及varchar寬度問題MySql字元
- mysql的text欄位長度MySql
- MySQL VARCHAR型別欄位到底可以定義多長MySql型別
- MySQL varchar詳解MySql
- javascript 動態修改css樣式方法彙總(四種方法)JavaScriptCSS
- linux自動修改密碼長度和有效期的指令碼Linux密碼指令碼
- 修改Mysql root密碼的方法MySql密碼
- 【MySQL】淺談varchar(N)MySql
- 【MySQL】淺談 varchar(N)MySql
- disruptor動態修改EventHandler
- Oracle 修改欄位型別和長度Oracle型別
- MySQL 5.7新特性之動態修改innodb_buffer_pool大小MySql
- 修改MySQL密碼的四種方法MySql密碼
- 聊聊 Vue 中 title 的動態修改Vue
- MySQL 如何儲存長度很長的資料欄位MySql
- 修改Tomcat可支援get形式url長度Tomcat
- MySQL 5.6使用pt-online-schema-change線上修改大表欄位長度MySql
- MySQL的欄位數量以及長度限制MySql
- Mysql中varchar與char的區別以及varchar(30)中的30代表的涵義MySql
- MySQL修改root密碼的多種方法MySql密碼
- mysql root 修改密碼的多種方法MySql密碼
- MySQL修改root密碼的幾種方法MySql密碼
- 修改mysql預設字符集的方法MySql
- MySQL中int、char、varchar的效能淺談MySql
- 獲取字串長度的幾個常用方法字串
- MySQL DB字符集修改方法MySql
- MySQL中CHAR和VARCHAR區別MySql