PG ::错误:错误:在"""或附近的零长度分隔标识符

Rya*_*ebo 5 postgresql activerecord ruby-on-rails

我刚刚在我的本地postgres数据库中对pg_restore进行了转储数据库的转储,以使它们排成一行.所有数据都通过了.

现在当我尝试在Rails控制台中查询时,我收到错误.

Artist.count
   (0.5ms)  SELECT COUNT(*) FROM "artists" 
=> 668
Run Code Online (Sandbox Code Playgroud)

**

Artist.last
  Artist Load (1.4ms)  SELECT "artists".* FROM "artists" ORDER BY "artists"."" DESC LIMIT 1
PG::Error: ERROR:  zero-length delimited identifier at or near """"
LINE 1: ...T  "artists".* FROM "artists"  ORDER BY "artists"."" DESC LI...
                                                             ^
: SELECT  "artists".* FROM "artists"  ORDER BY "artists"."" DESC LIMIT 1
ActiveRecord::StatementInvalid: PG::Error: ERROR:  zero-length delimited identifier at or near """"
LINE 1: ...T  "artists".* FROM "artists"  ORDER BY "artists"."" DESC LI...
                                                             ^
: SELECT  "artists".* FROM "artists"  ORDER BY "artists"."" DESC LIMIT 1
from /Users/ryanrebo/.rvm/gems/ruby-2.0.0-p481/gems/activerecord-3.2.13/lib/active_record/connection_adapters/postgresql_adapter.rb:1161:in `exec'
Run Code Online (Sandbox Code Playgroud)

我在所有其他模型上得到相同的错误.我也不能用find(id).

有任何想法吗?

Rya*_*ebo 6

我通过删除然后重新创建本地数据库,重新运行迁移并--data-only作为一个选项传递来解决此问题pg_restore。谢谢大家的帮助。那是一个奇怪的错误。


Tra*_*yen 5

发生此错误是因为"艺术家"表没有通过以下方式用于订单的主键:

艺术家负荷(1.4ms)选择"艺术家".*来自"艺术家"ORDER BY"艺术家".""DESC LIMIT 1

通过将以下代码块添加到rails迁移或在数据库中运行alter table命令来添加要修复的主键:

执行<< - SQL ALTER TABLE assets ADD PRIMARY KEY(id); SQL

其中id是"艺术家"的主键.