我正在尝试将数据从一个表移动到另一个表:
zuri=# INSERT INTO lili_code (uuid, arrow, popularname, slug, effdate, codetext)
SELECT uuid, arrow, popularname, slug, effdate, codetext
FROM newarts;
ERROR: null value in column "shorttitle" violates not-null constraint
我的问题: shorttitle不是我试图填写的列之一,那么为什么它是无效的呢?
请注意:
在这一点上,我认为我唯一的选择是
一个。手工插入(哎呀!)
湾制作csv并导入
℃。将所有缺少的列从lili_code添加到newarts并确保它们不是NULL并且至少具有默认值。
我错过了一个选项吗?什么是最好的解决方案?我正在使用django 1.9.1,python 2.7.11,Ubuntu 15.10和Postgresql 9.4。
一如既往地谢谢。
答案 0 :(得分:1)
由于该列为非null,因此您需要提供一个值。
如果没有真实数据,您可以在SELECT
语句的INSERT
部分动态计算,它不必是源表中的实际列。
如果您对空字符串没问题,可以
INSERT INTO lili_code
(uuid, arrow, popularname, slug, effdate, codetext, shorttitle)
SELECT uuid, arrow, popularname, slug, effdate, codetext, ''
FROM newarts;
或许你也想在这个专栏中使用popularname
:
INSERT INTO lili_code
(uuid, arrow, popularname, slug, effdate, codetext, shorttitle)
SELECT uuid, arrow, popularname, slug, effdate, codetext, popularname
FROM newarts;
答案 1 :(得分:1)
如果您没有在INSERT
上定义值,则数据库将插入NULL
或默认值。
如果列不允许NULL
,您将收到错误消息。因此要么提供虚拟值,要么更改字段以允许NULL
答案 2 :(得分:1)
您可以为列定义默认值,例如:
alter table lili_code alter shorttitle set default '';