91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql 5.7 新特性中在線in-place 修改字段的大小

發布時間:2020-08-09 17:56:09 來源:ITPUB博客 閱讀:983 作者:huzhichengforce 欄目:MySQL數據庫
VARCHAR 字段的大小能夠通過 ALTER TABLE,命令,以in-place 的方式修改, 例如 :
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(255);
This is true as long as the number of length bytes required by a VARCHAR column remains the same.只要修改字段后字段varchar所占字節數和原先的相同就能實現,例如對于 VARCHAR 值在 0到 255,只需要一個bytes. 對于 VARCHAR 的值是 256 bytes 或者大于256 需要兩個字節.這樣的話,通過 in-place ALTER TABLE 只支持0到255 之間的修改,或者說256 以及大于256之間修改.in-place alter table 不支持小于256的varchar值變更為大于256的值。因為在這種情況下存儲的字節會從1個字節變為兩個字節。只能通algorithm=copy的方式修改,例如將varchar (255)的值修改到256 in-place alter would 會返回一個錯誤
ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN c1 c1 VARCHAR(256);
ERROR 0A000: ALGORITHM=INPLACE is not supported. Reason: Cannot change
column type INPLACE. Try ALGORITHM=COPY.

這里需要著重說明的一點是需要針對不同的字符集來對應如果是英文 0-255 隨便修改如果是其它字符集那么就需要注意了因為不同字符集占存儲位不同這里拿中文做演示。
 CREATE TABLE `t1` (
  `name` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 
insert into t1 values ('hu')
commit;
mysql>  ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN name name  VARCHAR(100);
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

mysql>  ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN name name  VARCHAR(86);
ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.
mysql> 


mysql>  ALTER TABLE t1 ALGORITHM=INPLACE, CHANGE COLUMN name name  VARCHAR(85);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

修改為100和86 就報錯修改為85就沒問題  官方文檔不是說0-255 只要存儲的比特沒變就可以嗎? 為啥這里不行呢?
其實官方文檔是對的! 因為英文沒錯,但是換成其他字符集的話 存儲占位不同。
一個中文字符集占位UTF8 是三個bit  
85*3=255 所以修改為85 可以修改為86 就超過了255 了只能通過copy 的方式了。






向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德惠市| 古丈县| 墨脱县| 日土县| 安阳县| 东海县| 迁安市| 湄潭县| 东辽县| 隆子县| 桦川县| 麦盖提县| 罗山县| 盘锦市| 柘城县| 昭通市| 安新县| 和林格尔县| 鹤山市| 思南县| 安西县| 凤翔县| 习水县| 黄龙县| 洪江市| 登封市| 汝州市| 林西县| 富宁县| 韶山市| 福鼎市| 高阳县| 资源县| 广平县| 亚东县| 南汇区| 陇川县| 方山县| 合肥市| 台山市| 洪雅县|