数据库 PostgreSQL 查询问题

tomwey · 2013年06月04日 · 最后由 tomwey 回复于 2013年06月05日 · 3288 次阅读

User Load (0.9ms) SELECT "users".* FROM "users" WHERE (role = "用户") ActiveRecord::StatementInvalid: PG::Error: ERROR: column "用户" does not exist LINE 1: SELECT "users".* FROM "users" WHERE (role = "用户") ^ : SELECT "users".* FROM "users" WHERE (role = "用户")

用 Postgresql 做数据库。执行了一条查询语句,结果报上面的错,求指点啊,不胜感激!!!

单引号

@adu 这个查询语句是 Rails 生成的啊,是"用户"这换成单引号吗?

#2 楼 @tomwey User.where("role = ?", a) 这样也会错哇?

@zfjoy520 我是这样写的 scope :member, where('role = "用户"')

@zfjoy520 是不是有问题呢

难道真的是双引号的问题

#4 楼 @tomwey 这是源代码里面的例子:scope :red, where(:color => 'red')

@zfjoy520 哦,我试试呢。谢谢!!!

#8 楼 @tomwey

最后,建议在编写 SQL 脚本的时候,使用单引号做字符串常量的标识,虽然在 MS SQLServer 中双引号和单引号均可作为字符串常量的标识符,但是在 PostgreSQL 中对此就有严格的功能区分(不能用双引号作为字符串常量的标识符),为了保险起见,建议对所有的数据库对象名均使用双引号(")将其显式约定,以保证大小写的严格匹配。

网上找的。很少使用 PG,虽然我用 Mysql 试过你的 scope 没问题。

@zfjoy520 哦,非常感谢!!!我用 SQLite 也没这个问题。以后不这样写了

需要 登录 后方可回复, 如果你还没有账号请 注册新账号