2013-09-14 3 views
0

Я новичок в Ruby on Rails и Datamapper. Может кто-нибудь, пожалуйста, скажите мне, в чем разница между rake db:autoupgrade и rake db:automigrate в datamapper. Потому что в моем приложении я использовал модель А и модель B следующим образом:разница между рейком db: autoupgrade и rake db: automigrate

class A 
    includes DataMapper::resource 
    property :id, Serial 
    belongs_to :B, :required=>true 
    end 

    class B 
    includes DataMapper::resource 
    property :id, Serial 
    has n, :As 
    end 

Затем после изменения :required => false в модели А, делая rake db:autoupgrade никаких изменений не происходит в таблицу в базе данных, но при этом rake db:automigrate следующая ошибка Прибытие:

cannot delete or update a parent row: a foreign key constraint fails 

ответ

1

если есть постоянная внешнего ключа, вы не можете удалить связанную таблицу. что еще вы можете сделать, это rake db:drop и создать таблицу снова.

+1

Проблема решена сейчас. Сначала я беру mysql-дамп этой таблицы. Затем я удалил таблицу и изменил это поле в файле дампа, изменив его на deafult null. Затем я сделал rake db: autoupgrade и снова импортировал измененную таблицу dump в базу данных. – Joy

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