sql – Postgres错误:列“id”中的空值 – 在插入操作期间

前端之家收集整理的这篇文章主要介绍了sql – Postgres错误:列“id”中的空值 – 在插入操作期间前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 postgresql和yii2框架.
我收到了一条非常有趣的错误消息:
sqlSTATE[23502]: Not null violation: 7 ERROR: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null,1,null,Demo,1998-01-01,345345435453453,f,10,1470477479,null).

但我检查了我的插入命令,那里没有“id”列!

INSERT INTO "advertiser" ("languages","type","name","display_name","title","about","birthday","gender","country_id","county_id","city_id","city_part","street","house_number","phone","public_email","public_url","motto","message","im_facebook","im_skype","has_viber","has_whatsapp","has_sms_response","visible_birthday","is_checked","status","version","user_id","created_at","updated_at") VALUES (NULL,'Demo','','1998-01-01',NULL,'345345435453453',FALSE,1470477479) RETURNING "id"

所以我真的无法理解这个错误信息.我没有发现Postgres或Yii尝试插入空ID值或什么.

顺便说一下,你可以找到结构

Table "public.advertiser"
        Column         |          Type          |            Modifiers            | Storage  | Stats target | Description 
-----------------------+------------------------+---------------------------------+----------+--------------+-------------
 id                    | integer                | not null                        | plain    |              | 
 user_id               | integer                |                                 | plain    |              | 
 country_id            | integer                |                                 | plain    |              | 
 county_id             | integer                |                                 | plain    |              | 
 city_id               | integer                |                                 | plain    |              | 
 district_id           | integer                |                                 | plain    |              | 
 type                  | smallint               |                                 | plain    |              | 
 name                  | character varying(255) | not null                        | extended |              | 
 display_name          | character varying(255) | default NULL::character varying | extended |              | 
 title                 | character varying(255) | default NULL::character varying | extended |              | 
 about                 | text                   |                                 | extended |              | 
 birthday              | date                   | not null                        | plain    |              | 
 city_part             | character varying(255) | default NULL::character varying | extended |              | 
 street                | character varying(255) | default NULL::character varying | extended |              | 
 house_number          | character varying(20)  | default NULL::character varying | extended |              | 
 phone                 | character varying(15)  | not null                        | extended |              | 
 public_email          | character varying(255) | default NULL::character varying | extended |              | 
 public_url            | character varying(255) | default NULL::character varying | extended |              | 
 motto                 | character varying(255) | default NULL::character varying | extended |              | 
 message               | text                   |                                 | extended |              | 
 gender                | smallint               | not null default 1              | plain    |              | 
 im_facebook           | character varying(255) | default NULL::character varying | extended |              | 
 im_skype              | character varying(255) | default NULL::character varying | extended |              | 
 has_viber             | boolean                | not null default false          | plain    |              | 
 has_whatsapp          | boolean                | not null default false          | plain    |              | 
 has_sms_response      | boolean                | not null default false          | plain    |              | 
 visible_birthday      | boolean                | not null default false          | plain    |              | 
 status                | smallint               | not null default 10             | plain    |              | 
 is_checked            | boolean                | not null default false          | plain    |              | 
 geo_latitude          | double precision       |                                 | plain    |              | 
 geo_longitude         | double precision       |                                 | plain    |              | 
 languages             | integer[]              |                                 | extended |              | 
 created_at            | integer                |                                 | plain    |              | 
 updated_at            | integer                |                                 | plain    |              | 
 version               | bigint                 | default 0                       | plain    |              | 
Indexes:
    "advertiser_pkey" PRIMARY KEY,btree (id)

你有什么建议吗?我应该在哪里寻找问题?

解决方法

您没有为id插入值.由于您没有显式设置它,因此它隐式地给出了一个空值,当然,它不是主键列的有效值.您可以通过将此列定义为serial而不是普通的旧整数来避免这种情况,并将所有繁重的工作留给数据库.

猜你在找的MsSQL相关文章