推测不要在MySql查询中的字段名称中添加单引号

时间:2015-02-03 21:06:34

标签: php mysql database orm propel

我有以下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]

1 个答案:

答案 0 :(得分:4)

解决方案是关于propel git存储库的问题讨论。

  

我们已经改变了标识符引用的工作方式。你需要   每个数据库或每个表激活它:

<database ... identifierQuoting="true">
or
<table ... identifierQuoting="true">

正如问题评论中所述,推进2的相关推进问题为https://github.com/propelorm/Propel2/issues/781