我正在测试Propel 2。 我知道他们并不是完全稳定的喷气机。
我的问题是,我尝试将数据插入表中。 到目前为止一切都很好。
但是我得到了这个例外:
这是插入的代码:
$db = new CoreCountry();
try{
$db->setIdent($ident)
->setIso2($iso2)
->setIso3($iso3)
->setTranslation($translation)
->setId(null)
->save();
这是表格描述:
CREATE TABLE core_country (
id integer NOT NULL,
ident character varying(64),
iso2 character varying(2),
iso3 character varying(3),
translation text
);
CREATE SEQUENCE core_country_id_seq
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;
ALTER TABLE lab.core_country_id_seq OWNER TO postgres;
ALTER SEQUENCE core_country_id_seq OWNED BY core_country.id;
ALTER TABLE ONLY core_country ALTER COLUMN id SET DEFAULT nextval('core_country_id_seq'::regclass);
ALTER TABLE ONLY core_country ADD CONSTRAINT core_country_ident_key UNIQUE (ident);
ALTER TABLE ONLY core_country ADD CONSTRAINT core_country_iso2_key UNIQUE (iso2);
ALTER TABLE ONLY core_country ADD CONSTRAINT core_country_iso3_key UNIQUE (iso3);
ALTER TABLE ONLY core_country ADD CONSTRAINT core_country_pkey PRIMARY KEY (id);
我删除了not null语句,但它是由db自动读取的。
我还在setId方法中插入了一个空字符串,但是返回时不允许向自动增量字段添加任何内容。
请帮忙。
答案 0 :(得分:1)
请始终发布您的schema.xml,以便我们看到您的真实表格描述。
错误说
FEHLER: NULL-Wert in Spalte »id« verletzt Not-Null-Constraint
您已在id
来电之前将null
设为->save()
。所以很明显,你不应该传递null
,设置正确的值或让它自动增加并放弃->setId()
调用。