Проблемы с запуском миграции на таблицу пользователей с Postgresql - PullRequest
0 голосов
/ 06 мая 2011

Я пытаюсь обновить некоторые значения по умолчанию для новых столбцов, заданных в миграции. Однако я получаю сообщение об ошибке Postgres всякий раз, когда пытаюсь что-либо сделать с таблицей записей пользователей (кроме изменения ее структуры). Я использую Rails 3.0.7, ruby ​​1.9.2 и версию pg gem 0.11.0

Вот миграция:

def self.up
 add_column :users, :state_machine, :string
 add_column :users, :wizard_steps_completed, :integer, :default => "1"
 add_column :users, :activated_at, :datetime

 User.reset_column_information
 User.all.each do |u|
   u.update_attributes(:state_machine => "activated", :wizard_steps_completed => 3, :activated_at => u.created_at)
 end
end

Столбцы добавляются без проблем. однако все изменения в существующих записях завершаются с ошибкой:

** Invoke db:migrate (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:migrate
==  AddUserSignupInfo: migrating ==============================================
rake aborted!
An error has occurred, this and all later migrations canceled:

PGError: ERROR:  current transaction is aborted, commands ignored until end of transaction block
:             SELECT COUNT(*)
            FROM pg_tables
            WHERE tablename = 'users'

Если я попытаюсь обновить какую-либо запись, она работает, я могу только внести структурные изменения ...

Есть идеи?

1 Ответ

1 голос
/ 06 мая 2011

Включите ведение журнала postgres (настроено в /var/lib/pgsql/data/postgresql.conf и grep для «ОТЧЕТА ОБ ОШИБКЕ И ВХОДЕ»).Или вы можете захотеть взять SQL и запустить его самостоятельно, чтобы увидеть, что происходит.Это может быть ограничение из-за вашего обновления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...