32

嗨,我目前正在学习 Rails,并遵循教程。说明是在我创建应用程序后编辑迁移文件,然后运行 ​​rake db:migrate,然后运行 ​​rake db:create。

我已将迁移文件编辑为此:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :username
      t.string :email
      t.string :encrypted_password
      t.string :salt
      t.timestamps
    end
  end
end

然后当我运行'rake db:migrate'时出现错误

Mysql2::Error: Table 'users' already exists: CREATE TABLE `users` ...

在我应该运行“rake db:create”之后,我得到了这个

user_auth_development already exists
user_auth_test already exists
4

3 回答 3

56

您运行rake db:create一次且仅一次,并且您首先运行它。然后rake db:migrate每次添加/更改迁移时运行。您已经运行了此迁移,或者您指向的数据库已经存在并且已经包含一个名为users. 我的猜测是你已经运行了一次迁移,在这种情况下你可能很高兴。如果您想核对数据库并重新开始,请执行rake db:drop db:create db:migrate.

于 2013-05-26T11:31:05.420 回答
21

我们可以简单地给出,它将完成数据库创建和迁移所需的所有 rake 任务

rake db:setup

于 2014-01-06T13:20:50.837 回答
1

对于 Rails 5 和 6,命令是:

rails setup

这将“创建数据库,加载模式,并使用种子数据对其进行初始化”(docs)。

于 2021-01-01T13:17:27.800 回答