2012-08-12 3 views
0

Я изменил свое имя таблицы в рельсах, и после этого я получаю эту ошибку:Неприятность после переименования таблицы

PG::Error: ERROR: relation "old_table_name" does not exist 
LINE 4:    WHERE a.attrelid = '"old_table_name"'::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 = '"old_table_name"'::regclass 
       AND a.attnum > 0 AND NOT a.attisdropped 
      ORDER BY a.attnum 

Что я должен сделать, чтобы избавиться от этой ошибки?

ответ

1

Вам необходимо убедиться, что ваша модель, контроллеры, ассоциации и т. Д. Также исправлены. Ошибка указывает, что есть часть вашего приложения Rails, которое все еще использует старое имя.

Эта ошибка выглядит так, как из журнала Rails. Если вы посмотрите несколько строк до PG::Error, он должен указать часть кода, который делает эту ссылку, и поэтому должен сообщить вам, где нужно исправить.

+0

К сожалению, в файле журнала больше ничего больше, что я думаю, что я исправил все места. – matyyyy

+1

Вы можете * подумать * вы исправили все места ... но вы просто * не имеете * :-) Вы обыскали всю вашу базу кода для имени старой таблицы? Может ли он храниться в самой БД где угодно (как часть ИППП или полиморфных имен типов, возможно)? Является ли она «построена» путем конкатенации строк (которая будет скрываться от глобальных поисков) ?. Upshot: придерживайте точку останова на этой строке, а затем проверьте все переменные и код вокруг нее, чтобы увидеть, где ошибка. – Pavling

+0

Да, я искал всю папку приложения в возвышенном виде. Я новичок в рельсах, поэтому это была очень простая модель. – matyyyy

0

Поскольку ошибка явно относится к relation, я предполагаю, что где-то еще есть

has_many :old_names 

или

belongs_to :old_name 

Кроме того: вы изменили инородные-ключей в соответствии с новым именем ? Например. new_table_name_id вместо old_table_name_id?

Надеюсь, это поможет.

+0

У меня нет никаких отношений между таблицами. – matyyyy

+0

Как вы изменили имя таблицы? Вы также изменили название класса? – nathanvda

+0

Я использовал измененный метод. Я решил вернуться к состоянию до переименования. В будущем, вероятно, я хотел бы снова попробовать переименовать таблицы в моем проекте, но теперь я хотел бы закодировать некоторую логику в своем приложении. – matyyyy

Смежные вопросы