PG::Error: ERROR: zero-length delimited identifier at or near """"

17,831

Solution 1

I fixed this by dropping and then re-creating the local database, re-running the migrations, and passing --data-only as an option on pg_restore. Thanks for the help y'all. That was a strange error.

Solution 2

The error occurs because "artists" table does not have a primary key which is used for the order by:

Artist Load (1.4ms) SELECT "artists".* FROM "artists" ORDER BY "artists"."" DESC LIMIT 1

Add a primary key to fix by adding the following code block to a rails migration or run the alter table command in the database:

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

where id is the primary key of "artists".

Share:
17,831
Ryan Rebo
Author by

Ryan Rebo

Product guy, currently conceptualizing and building internal software tools via my co Svvarga Studios.

Updated on August 14, 2022

Comments

  • Ryan Rebo
    Ryan Rebo almost 2 years

    I just did a dump of my staging databse, than did pg_restore on my local postgres databse to get them to line up. All the data went through.

    Now when I try to query in the Rails console, I get errors.

    Artist.count
       (0.5ms)  SELECT COUNT(*) FROM "artists" 
    => 668
    

    **

    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'
    

    I get the same error on all other Models. I also cannot use find(id).

    Any ideas?