Из-за некоторых проблем с развертыванием я перестал отслеживать schema.rb в git. Каким-то образом я заполнил это и где-то по пути исчез мой файл schema.rb.
Есть ли способ регенерации schema.rb из базы данных или из миграций? Я бы предпочел не потерять существующие данные.
ruby-on-rails
ruby-on-rails-3
git
штифтик
источник
источник
rake db:schema:dump
на рельсах 2.0Осторожный,
сбросит текущую схему БД ИЗ БД . Это означает, что если вы внесли какие-либо изменения в свои миграции, они НЕ будут отражены в файле schema.rb, который не соответствует IMO.
Если вы хотите заново создать схему из миграций, сделайте следующее:
источник
rake db:schema:dump
команду.Я думаю, что это все еще действует в Rails 3 - он восстанавливает schema.rb из базы данных.
источник
РЕЙЛИ 5 Путь:
или если вы обнаружили Gem :: LoadError, то:
Примечание:
в рельсах 5 рекомендуется, чтобы задача генерировалась / выполнялась с использованием
rails
вместоrake
, это просто для запоминания, сгенерированная рельсами задача имеет расширение,.rake
см. вlib/tasks/myTask.rake
. Это означает, что эти задачи также могут быть выполнены путем добавленияrake
.источник
Если вы регенерируете
schema.rb
локально, вы должны быть в порядке. Он просто содержит представление о структуре таблиц вашей базы данных. Сами данные не содержатся в этом файле.Чтобы восстановить ваш
schema.rb
файл, запустите:Затем просто зафиксируйте новый
schema.rb
файл, и вы будете в хорошей форме!источник
Непосредственно из самого файла schema.rb:
Так что НЕ делайте предложение о том
rake db:migrate
, что было предложено - на момент написания этой статьи - ответ с самым низким рейтингом.источник
У меня также была похожая проблема, когда моя старая схема не обновлялась, даже если я удалил миграцию.
Итак, я удалил все существующие таблицы в базе данных и снова перенес их. Затем команда «db: schema: load» дала мне свежий файл schema.rb.
источник