MySQL8给已有表新增自增列赋初始值的问题

错误1:[22001][1138] Data truncation: Invalid use of NULL value

原因:

如果你xxx表已有数据,你是无法新增自增列的,需要中转一下。因为自增列需要是key。

解决:

  1. 第一步,给xxx表加上自增列,不要设置自增属性,否则会失败。
  2. 第二步:执行以下sql给xxx的自增列赋初值。
with cte as (
    select row_number() over (order by createTime) as incre_id, <表中主键ID> from area_code
) update xxx ac set incre_id = (select incre_id from cte where <表中主键ID> = ac.<表中主键ID>) where incre_id is null;
  1. 第三步:设置自增列的额外的属性吧。例如:主键、非空等属性。

  2. ok了,应该没有问题了

== 注意,以上是在mysql8.0版本上操作的==

引用

function_row-number

posted @ 2023-03-30 11:56  星小梦  阅读(293)  评论(0编辑  收藏  举报