1 问题描述

当我使用Navicat新建表test_table之后,想通过导入向导将excel表中的数据导入到表test_tab中,由于没有excel表中没有主键对应的字段,导致导入失败,提示Field 'id' doesn't have a default value

这是由于在导入数据时,没有给主键id赋值,违反了非空约束。


表结构如下
在这里插入图片描述导入字段如下
在这里插入图片描述

2 解决方案

使用触发器,设置mysql数据表的主键为uuid

设计表,选择触发器,进行以下设置

在这里插入图片描述

设置 id 为uuid

BEGIN
    SET new.id = UUID();
END

注意:触发器的不能重复,自身不能重,与其他表也不能重,否则无法保存 👇

在这里插入图片描述

保存后就可以啦,在插入数据前会自动在主键id列生成uuid

3 其他方法

还有一种比较笨的方法,就是在excel表中新增id列,设置从1依次递增。在导入向导中将该列与test_table的主键id进行绑定,这样也可以成功导入。

若是需要将id改为uuid ,直接执行update语句即可

UPDATE `test_table`
SET id=uuid
Logo

一站式 AI 云服务平台

更多推荐