我使用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, null, null, null, 1, Demo, , , , 1998-01-01, , , , 345345435453453, , , , , 1, , , f, f, f, f, 10, f, 1, f, f, f, null, null, null, 1470477479, 1470477479, null).

但是我判断了我的Insert命令,那里没有"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, 1, 'Demo', '', '', '', '1998-01-01', 1, NULL, NULL, NULL, '', '', '', '345345435453453', '', '', '', '', '', '', FALSE, FALSE, FALSE, FALSE, FALSE, 10, NULL, 1, 1470477479, 1470477479) RETURNING "id"

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

顺便说一下,你可以在这里找到 struct

                                                    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插入值.由于没有显式设置它,因此隐式地给它一个null值,这当然不是主键列的有效值.通过将此列定义为serial而不是简单的integer,可以避免整个情况,并将所有繁重的工作留给数据库.

Postgresql相关问答推荐

如何将存储的、生成的列添加到非常大的表中?

PostGresql :正则表达式 Select 其中只有一个正斜杠的行

在 Postgresql 中实现自定义运算符时出错

使用doobie,如何将Scala case类映射到带有类型tstzmultirange的PostgreSQL列?

Postgres 视图定义 (pgAdmin) 被删除了 comments ?

连接到 PostgreSQL 时没有属性执行错误

如何包装 record_out() 函数?

用于生产的 Rails 性能调优?

如何在 postgresql 中创建一个空的 JSON 对象?

使用 try/except 与 psycopg2 或with closing?

是否可以在 Postgres 中存储一个 1 字节的数字?

如何在可选参数上查询 postgres?

为什么PostgresQL查询性能随时间下降,但在重建索引时恢复

Rails 4 迁移: has_and_belongs_to_many table name

如何在数据库表中查找重复条目?

Postgres NOT IN (null) 没有结果

Django 1.9.2 AssertionError:database connection isn't set to UTC

在 PostgreSQL 中 Select 进入临时表?

如何减少存储(缩减)我的 RDS 实例?

如何在创建数据库时安装 Postgres 扩展?