Ответы:
Если вы запустите, rake -T
он перечислит все возможные грабли для вашего проекта Rails. Одним из них является db: schema: dump, который воссоздает schema.rb для приложения Rails из базы данных.
bundle exec rake db:schema:dump
rake db:schema:dump
на рельсах 2.0
Осторожный,
rake db:schema:dump
сбросит текущую схему БД ИЗ БД . Это означает, что если вы внесли какие-либо изменения в свои миграции, они НЕ будут отражены в файле schema.rb, который не соответствует IMO.
Если вы хотите заново создать схему из миграций, сделайте следующее:
rake db:drop # ERASES THE DATABASE !!!!
rake db:create
rake db:migrate
rake db:schema:dump
команду.
РЕЙЛИ 5 Путь:
rails db:schema:dump
или если вы обнаружили Gem :: LoadError, то:
bundle exec rails db:schema:dump
Примечание:
в рельсах 5 рекомендуется, чтобы задача генерировалась / выполнялась с использованием rails
вместо rake
, это просто для запоминания, сгенерированная рельсами задача имеет расширение, .rake
см. в lib/tasks/myTask.rake
. Это означает, что эти задачи также могут быть выполнены путем добавления rake
.
Если вы регенерируете schema.rb
локально, вы должны быть в порядке. Он просто содержит представление о структуре таблиц вашей базы данных. Сами данные не содержатся в этом файле.
Чтобы восстановить ваш schema.rb
файл, запустите:
bundle exec rake db:schema:dump
Затем просто зафиксируйте новый schema.rb
файл, и вы будете в хорошей форме!
Непосредственно из самого файла schema.rb:
Если вам нужно создать базу данных приложения в другой системе, вы должны использовать ее
db:schema:load
, а не запускать все миграции с нуля. Последний является некорректным и неустойчивым подходом (чем больше миграций вы соберете, тем медленнее он будет выполняться и тем выше вероятность возникновения проблем).
Так что НЕ делайте предложение о том rake db:migrate
, что было предложено - на момент написания этой статьи - ответ с самым низким рейтингом.
У меня также была похожая проблема, когда моя старая схема не обновлялась, даже если я удалил миграцию.
Итак, я удалил все существующие таблицы в базе данных и снова перенес их. Затем команда «db: schema: load» дала мне свежий файл schema.rb.
drop table my_table_name // deleted them individually
rake db:migrate
rake db:schema:dump // re-created a new schema