MySQL中修改列属性时造成comment属性丢失

修改字段定义的时候,要把整个字段的全部的定义都写上,举个栗子:

原字段定义:

state  varchar(50) NOT NULL DEFAULT '' COMMENT '产品资料状态'

需求:修改字段长度为100

正确的写法:

alter table t1 modify state  varchar(100) NOT NULL DEFAULT '' COMMENT '产品资料状态'

错误的写法:

alter table t1 modify state  varchar(100)            //此操作会将NOT NULL DEFAULT '' COMMENT '产品资料状态' 信息清掉,state的定义只有 varchar(100)。

这种问题会发生在mysql、tidb中,需要特别注意,Oracle中则没有这种问题。

下面是测试过程:

mysql:修改列属性时需要写上comment完成语句

17:25:52[5.7.25-log]root->192.168.30.10[mtest]> create table t1 (id int,name varchar(100));
alter table t1 modify name  varchar(100)  COMMENT 'test_comment';
show create table t1;
Query OK, 0 rows affected (0.04 sec)

17:27:30[5.7.25-log]root->192.168.30.10[mtest]> alter table t1 modify name  varchar(100)  COMMENT 'test_comment';
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

17:27:30[5.7.25-log]root->192.168.30.10[mtest]> show create table t1;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                       |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL COMMENT 'test_comment'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

--修改列属性后comment信息丢失
17:27:30[5.7.25-log]root->192.168.30.10[mtest]> alter table t1 modify name  varchar(200);   
show create table t1;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

17:33:26[5.7.25-log]root->192.168.30.10[mtest]> show create table t1;
+-------+-----------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                |
+-------+-----------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+-----------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
--正确的操作
17:33:26[5.7.25-log]root->192.168.30.10[mtest]> alter table t1 modify name  varchar(200) COMMENT 'test_comment';   
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

17:35:08[5.7.25-log]root->192.168.30.10[mtest]> show create table t1;
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                       |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(200) DEFAULT NULL COMMENT 'test_comment'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 |
+-------+----------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

tidb:修改列属性时需要写上comment完成语句

17:23:43[5.7.25-TiDB-v4.0.5]root->192.168.30.10[mtest]> create table t1 (id int,name varchar(100));
alter table t1 modify name  varchar(100)  COMMENT 'test_comment';
Query OK, 0 rows affected (0.16 sec)

17:27:01[5.7.25-TiDB-v4.0.5]root->192.168.30.10[mtest]> alter table t1 modify name  varchar(100)  COMMENT 'test_comment';
Query OK, 0 rows affected (0.17 sec)

17:27:02[5.7.25-TiDB-v4.0.5]root->192.168.30.10[mtest]> show create table t1;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                           |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(100) DEFAULT NULL COMMENT 'test_comment'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
--修改列属性后comment信息丢失
17:27:10[5.7.25-TiDB-v4.0.5]root->192.168.30.10[mtest]> alter table t1 modify name  varchar(200);   
show create table t1;
Query OK, 0 rows affected (0.12 sec)

17:33:20[5.7.25-TiDB-v4.0.5]root->192.168.30.10[mtest]> show create table t1;
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                    |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(200) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin |
+-------+-------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
--正确的操作
17:33:20[5.7.25-TiDB-v4.0.5]root->192.168.30.10[mtest]> alter table t1 modify name  varchar(200) COMMENT 'test_comment';   
show create table t1;
Query OK, 0 rows affected (0.13 sec)

17:35:12[5.7.25-TiDB-v4.0.5]root->192.168.30.10[mtest]> show create table t1;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                           |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| t1    | CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(200) DEFAULT NULL COMMENT 'test_comment'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

oracle:修改列属性不影响comment

17:25:58 SYS@orcl11g>create table t1 (id int,name varchar2(100));

Table created.

17:27:41 SYS@orcl11g>comment on column t1.name is 'test_comment'; 

Comment created.

--oracle中看到的表结构

  CREATE TABLE "SYS"."T1"
   (    "ID" NUMBER(*,0),
        "NAME" VARCHAR2(100)
   ) ;


   COMMENT ON COLUMN "SYS"."T1"."NAME" IS 'test_comment';
   
 --修改列属性后再看下表结构
 17:27:45 SYS@orcl11g>alter table t1 modify name  varchar2(200);

Table altered.
  CREATE TABLE "SYS"."T1"
   (    "ID" NUMBER(*,0),
        "NAME" VARCHAR2(200)
   ) ;


   COMMENT ON COLUMN "SYS"."T1"."NAME" IS 'test_comment';

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要修改MySQL Workbench属性,可以按照以下步骤操作: 1. 打开MySQL Workbench并连接到数据库。 2. 在左侧的“SCHEMAS”面板选择要修改的数据库。 3. 在该数据库下选择要修改的表。 4. 在表的“Columns”选项卡选择要修改。 5. 在属性面板,可以修改的名称、数据类型、长度、是否为主键、是否自增等属性。 6. 修改完毕后,点击“Apply”按钮保存修改。 7. 最后,点击“Apply”按钮应用所有修改。 以上就是修改MySQL Workbench属性的步骤。 ### 回答2: MySQL Workbench是一款MySQL数据库建模和管理工具,它提供了一个可视化的界面,用于更方便地操作数据库。在MySQL Workbench修改属性是一个很常见的操作,下面我们将介绍如何在MySQL Workbench修改属性。 1. 打开数据库连接,进入“Schema”页面。 2. 找到需要修改属性的表,双击打开。 3. 选需要修改属性,右键单击,选择“Edit”选项。 4. 在弹出的编辑窗口,可以修改属性,例如名、数据类型、长度、是否允许为空等。 5. 修改完成后,点击“Apply”按钮保存修改。 6. 如果需要撤销修改,可以点击“Revert”按钮回到修改前的状态。 7. 修改完成后,可以点击“Close”按钮关闭编辑窗口。 需要注意的是,在修改属性之前,应该先备份数据,以防修改出现错误导致数据丢失。另外,在修改属性,应该注意数据类型的兼容性,以避免数据类型不匹配的问题出现。 总的来说,MySQL Workbench提供了一个直观易懂的界面,方便用户操作数据库。通过上述步骤,我们可以轻松地修改属性。 ### 回答3: MySQL Workbench是一款广泛应用在MySQL数据库管理的图形化工具。其修改属性是其非常重要的功能之一。下面将介绍如何使用MySQL Workbench来修改属性。 步骤一:打开MySQL Workbench,然后选择要修改属性的表。 步骤二:选择该表的要修改属性。右键单击该名称,然后选择“Alter Table”。 步骤三:在弹出的对话框,选择要修改属性,并输入新的属性。最常见的属性修改包括数据类型、长度和默认值等。 步骤四:保存更改,并在数据库执行修改。 需要注意的是,在进行属性修改之前,请务必备份数据库以防意外情况发生。此外,如果该表已经存在数据,修改属性将可能导致数据丢失或错误。因此,在修改属性之前,请确保你对该表和所需的属性做了充分的理解和规划。 在实际应用MySQL Workbench修改属性是非常广泛使用的功能之一。因为数据在数据库占据着极为重要的地位,在数据的规划和管理,对于每一属性设计和属性修改将直接影响到整个数据的结构和组织。因此,通过使用MySQL Workbench的修改属性功能,管理员可以有效地管理和优化数据库表结构,提高数据库的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值