![](/img/trans.png)
[英]Upload a file to a Rails Application from a Ruby command-line application
[英]rails SQL query reported failing with postgres but succeeds from psql command-line tool
我试图在Ubuntu上使用Postgres9.1的Rails 2.3.5应用程序(在Phusion Passenger上在Apache2上部署)。 当我尝试访问该应用时,该应用抛出此错误,抱怨该表不存在:
PGError: ERROR: relation "users" does not exist
LINE 4: WHERE a.attrelid = '"users"'::regclass
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"users"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
但是,如果我在psql(cmdline-client)上剪切并粘贴了相同的查询,则可以正常工作。 用户表也存在。 我一次又一次尝试了rake db:reset和'rake db:migrate',但这似乎无济于事。
我还验证了ActiveRecord :: Base.connection是否可以从rails-app中的脚本/控制台成功执行,这意味着与数据库的连接可以使用database.yml中配置的凭据进行工作。
我迷路了..任何补救措施的线索将不胜感激。
三种可能的原因。
1) 特殊的search_path
转换:: regclass考虑了search_path
的当前设置。 从您的应用程序查询时,也许您的表users
所处的架构不在search_path
。 可以为每个用户或会话设置search_path
。
解决方案是像这样对表名进行模式限定:
'myschema.users'::regclass
2)大写。 为什么使用'"users"'::regclass
而不是'users'::regclass
? 这是多余的。 表的实际名称是“ Users”还是其他名称,并且在psql中使用大写字母? (如果您实际剪切并粘贴了查询,就不能这样。)
3)连接到错误的数据库。 端口错误? (请参阅@a_horse的评论。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.