推进 2 的问题

Posted

技术标签:

【中文标题】推进 2 的问题【英文标题】:Issues with Propel 2 【发布时间】:2014-05-23 18:22:57 【问题描述】:

我目前正在测试 Propel 2。 我知道它们不是完全稳定的喷气机。

我的问题是,我尝试将数据插入表中。 到目前为止一切顺利。

但我得到了这个例外:

http://pastebin.com/LH4Pw5jf

这是插入的代码:

            $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 方法中插入了一个空字符串,但返回的是不允许向自动增量字段添加任何内容。

请帮忙。

【问题讨论】:

你应该在 Propel 官方仓库 github.com/propelorm/Propel2987654322@ 上发布问题 【参考方案1】:

请始终发布您的 schema.xml,以便我们看到您的真实表描述。

错误提示

FEHLER:  NULL-Wert in Spalte »id« verletzt Not-Null-Constraint

在调用->save() 之前,您已将id 设置为null。所以很明显你不应该传递null,设置一个正确的值或者让它自动递增并放弃->setId()调用。

【讨论】:

以上是关于推进 2 的问题的主要内容,如果未能解决你的问题,请参考以下文章

推进“AND NOT”查询

案例:推进GTID解决MySQL主主不同步问题

ZF 整合的推进或原则

推进 ORM 的问题

推进单表继承问题

是啥导致了这个推进错误?