返回顶部
首页 > 资讯 > 数据库 >mysql 5.7 新特性中在线in-place 修改字段的大小
  • 786
分享到

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

2024-04-02 19:04:59 786人浏览 薄情痞子
摘要

VARCHAR 字段的大小能够通过 ALTER TABLE,命令,以in-place 的方式修改, 例如 : ALTER TABLE t1 ALGoRITHM=INPLACE, CHANGE COLUMN

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

您可能感兴趣的文档:

--结束END--

本文标题: mysql 5.7 新特性中在线in-place 修改字段的大小

本文链接: https://lsjlt.com/news/47186.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作