文章目录
- 1 问题描述
- 2 解决方案
- 3 其他方法
1 问题描述
当我使用Navicat新建表test_table
之后,想通过导入向导将excel表中的数据导入到表test_tab
中,由于没有excel表中没有主键对应的字段,导致导入失败,提示Field 'id' doesn't have a default value
这是由于在导入数据时,没有给主键id赋值,违反了非空约束。
表结构如下
导入字段如下
2 解决方案
使用触发器,设置mysql数据表的主键为uuid
设计表,选择触发器,进行以下设置
设置 id
为uuid
BEGINSET new.id = UUID();
END
注意:触发器的名
不能重复,自身不能重,与其他表也不能重,否则无法保存 👇
保存后就可以啦,在插入数据前会自动在主键id列生成uuid
3 其他方法
还有一种比较笨的方法,就是在excel表中新增id列,设置从1依次递增。在导入向导中将该列与test_table
的主键id进行绑定,这样也可以成功导入。
若是需要将id改为uuid ,直接执行update语句即可
UPDATE `test_table`
SET id=uuid