rake db:schema:load
загрузит файл schema.rb
в базу данных рельсов. Есть ли способ загрузить файл structure.sql
в базу данных через rake или мне просто нужно сделать это вручную?
Загрузите struct.sql в базу данных рельсов через rake
Ответ 1
Используйте rake db:structure:load
, который загрузит db/structure.sql
.
Ответ 2
Просто используйте
rake db:setup
который будет использовать либо schema.rb
, либо structure.sql
в зависимости от вашей конфигурации.
Ответ 3
Использовать собственный механизм загрузки SQL базы данных.
Для Postgres это должно работать (по крайней мере, если база данных существует и вам не нужен пароль):
psql -d databaseName < db/structure.sql
На Heroku, где rake db: настройка не работает, поскольку вы не можете создать такую базу данных, что вы можете это сделать:
heroku pg:psql < db/structure.sql
Ответ 4
После загрузки вашей схемы вы можете попробовать:
rails dbconsole < structure.sql
ИЛИ
rails db < structure.sql
Ответ 5
Сделайте свой файл seeds.rb следующим:
unless Rails.env.production?
connection = ActiveRecord::Base.connection
sql = File.read('db/structure.sql')
statements = sql.split(/;$/)
statements.pop # the last empty statement
ActiveRecord::Base.transaction do
statements.each do |statement|
connection.execute(statement)
end
end
end
Ответ 6
Иногда вы хотите загрузить файл, который не является значением по умолчанию db/structure.sql
.
Для рельсов 4.2 и более ранних версий используйте
DB_STRUCTURE=some_file.sql rake db:structure:load
В качестве рельсов 5 используйте
SCHEMA=some_file.sql rake db:structure:load