概述

本文介绍云数据库 RDS MySQL 版表在没有主键时如何添加主键。

 

详细信息

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
  1. 执行如下SQL语句,查看是否有主键。
    select table_schema,
           table_name
    from information_schema.tables
    where (table_schema,
           table_name) not in
        (select distinct table_schema,
                         table_name
         from information_schema.columns
         where COLUMN_KEY='PRI' )
      and table_schema not in ('sys',
                               'mysql',
                               'information_schema',
                               'performance_schema');
    系统显示类似如下。
  2. 执行如下SQL语句,查看参数implicit_primary_key的值是否为ON
    show global variables  like 'implicit_primary_key';
    系统显示类似如下。

    说明:如果查询没有该参数或值为OFF,请您提交工单进行修改。
  3. 执行如下SQL语句,修改无主键表。
    alter table [$Table_Name] engine=innodb;
    说明:
    • [$Table_Name]为表名。
    • 执行过程中会禁止数据写入表,但是仍然可以读取。
    • implicit_primary_keyON时,修改表的引擎会自动添加隐式主键。
  4.  执行如下SQL语句,为无主键表添加主键。
    ALTER TABLE [$Table_Name] ADD PRIMARY KEY ([$Type_Name]);
    注:[$Type_Name]为需要添加的主键名。

 

适用于

  • 云数据库 RDS MySQL 版