CREATE...SELECT出现错误
CREATE...SELECT出现错误 为什么先创建数据表,然后INSERT...SELECT时可以操作成功,但是直接CREATE...SELECT时就会出现错误:field'cate_name' doesn't have a default value?
CREATE...SELECT出现错误 为什么先创建数据表,然后INSERT...SELECT时可以操作成功,但是直接CREATE...SELECT时就会出现错误:field'cate_name' doesn't have a default value?
2017-06-30
上一条回答并不严谨,也没有捕捉到真正的点。
在使用CREATE SELECT时并没有指定对应列名,所以这里就需要注意一个地方:新创建表中的想插入数据的字段名必须要与SELECT中的字段名称一致才可以,如果名字不一致了那么插入查询结果时那个字段只能为NULL,但若同时那个字段被你定义为NOT NULL,那么就会产生这个“doesn't have a default value”问题。
在实际操作中,是这样的:
没错,是这个问题,于是去掉NOT NULL的非空约束,是没有问题了,Query OK, 9 rows affected。可是查询表中的记录,你会发现:
因为字段名不一致,那个different的字段值都被赋为NULL,因为查不到,并且还创建了新的字段,这里也就明白了为什么老师PPT上为什么对列的定义 [(create_definition,…)] 竟然还是可选的参数,因为你要是不手动定义,MySQL会把SELECT的表对应的字段的定义给复制过来。
另外上一条回答其实也牵涉到了另外一个知识点。
最简单的方法是cate_name字段允许为空,更详细的原因参考:https://www.cnblogs.com/os-python/p/6773499.html
举报