我有以下mysql表:
CREATE TABLE `content_segments`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`include` TINYINT(1) NOT NULL,
`dimension` VARCHAR(50) NOT NULL,
`media_type` VARCHAR(50) NOT NULL,
`match` VARCHAR(50) NOT NULL,
`content` TEXT NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
问题是匹配字段在 MySQL 中是保留字,并且 propel2 不会用单引号将字段名称括起来,以便在运行时(生成查询时)转义保留字。我想知道是否有为什么要用单引号强制转义我的所有表字段以避免保留字错误。我得到的错误是这样的:
Unable to execute SELECT statement [SELECT id, include, dimension, media_type, match, content FROM content_segments WHERE id = :p0]
解决方案是在 propel git 存储库的问题讨论中。
我们改变了标识符引用的工作方式。你需要 按数据库或表激活它:
<database ... identifierQuoting="true">
or
<table ... identifierQuoting="true">
正如问题评论中所述,相关的推进问题对于 propell2 https://github.com/propelorm/Propel2/issues/781