Rake db:setup 不 运行 rails db:migrate, schema.rb 不存在错误
Rake db:setup does not run rails db:migrate, schema.rb does not exist error
在 Rails 6,我希望 rake db:setup
执行 db:create
、db:migrate
和 db:seed
我只有一个数据模型,其 table 的记录创建是在 db/seeds.rb
中编写的
# db/seeds.rb
require 'csv'
csv_text = File.read(Rails.root.join('lib', 'seeds', 'seed_first_table.csv'))
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1')
csv.each_with_index do |row, index|
cr = CatProfile.new
puts "row #{index} saved"
end
puts "There are now #{CatProfile.count} rows in the table"
database.yml
还有一个通过 sudo -u postgres createuser -s new_user
创建的新用户凭据
但是rake db:setup
returns:
Created database 'my_application_development'
Created database 'my_application_test'
my_application/db/schema.rb doesn't exist yet. Run `rails db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /my_application/config/application.rb to limit the frameworks that will be loaded.
在 sudo -u postgres psql
中它确实创建了数据库但是没有关系(没有种子 table)
当我运行rails db:migrate
== 20201103153526 CreateCatProfiles: migrating =================================
-- create_table(:cat_profiles)
-> 0.0091s
== 20201103153526 CreateCatProfiles: migrated (0.0092s) ========================
然后当我 运行 rake db:setup
第二次时:
Database 'my_application_development' already exists
Database 'my_application_test' already exists
row 0 saved
row 1 saved
...
row 1719 saved
There are now 1720 rows in the table
注意到数据库从第一个 rake db:setup
开始就已经存在,但现在可以为 table
播种
我不明白为什么 运行ning rake db:setup
第一次在播种前没有选择必要的迁移
如果您检查 source code 的 rails db:setup
,您会发现 db:setup
不 运行 db:migrate
Creates the database, loads the schema, and initializes with the seed data (use db:reset to also drop the database first)
db:schema:load
将 schema.rb
当前存在的内容加载到数据库中。
在 Rails 6,我希望 rake db:setup
执行 db:create
、db:migrate
和 db:seed
我只有一个数据模型,其 table 的记录创建是在 db/seeds.rb
# db/seeds.rb
require 'csv'
csv_text = File.read(Rails.root.join('lib', 'seeds', 'seed_first_table.csv'))
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1')
csv.each_with_index do |row, index|
cr = CatProfile.new
puts "row #{index} saved"
end
puts "There are now #{CatProfile.count} rows in the table"
database.yml
还有一个通过 sudo -u postgres createuser -s new_user
但是rake db:setup
returns:
Created database 'my_application_development'
Created database 'my_application_test'
my_application/db/schema.rb doesn't exist yet. Run `rails db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /my_application/config/application.rb to limit the frameworks that will be loaded.
在 sudo -u postgres psql
中它确实创建了数据库但是没有关系(没有种子 table)
当我运行rails db:migrate
== 20201103153526 CreateCatProfiles: migrating =================================
-- create_table(:cat_profiles)
-> 0.0091s
== 20201103153526 CreateCatProfiles: migrated (0.0092s) ========================
然后当我 运行 rake db:setup
第二次时:
Database 'my_application_development' already exists
Database 'my_application_test' already exists
row 0 saved
row 1 saved
...
row 1719 saved
There are now 1720 rows in the table
注意到数据库从第一个 rake db:setup
开始就已经存在,但现在可以为 table
我不明白为什么 运行ning rake db:setup
第一次在播种前没有选择必要的迁移
如果您检查 source code 的 rails db:setup
,您会发现 db:setup
不 运行 db:migrate
Creates the database, loads the schema, and initializes with the seed data (use db:reset to also drop the database first)
db:schema:load
将 schema.rb
当前存在的内容加载到数据库中。