我正在尝试使用rails 3创建一个新表。首先我将模型创建为rails g model Vendor name:string address:string
。当键入rake db:migrate`时,它给了我以下错误。
错误:Mysql ::错误:表'用户'已存在
C:\Site\swargadwara_puri>rake db:migrate
== CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql::Error: Table 'users' already exists: CREATE TABLE `users` (`id` int(11) D
EFAULT NULL auto_increment PRIMARY KEY, `contact_name` varchar(255), `login_id`
varchar(255), `password_hash` varchar(255), `password_salt` varchar(255), `phone
` varchar(255), `address` varchar(255), `created_at` datetime NOT NULL, `updated
_at` datetime NOT NULL) ENGINE=InnoDBC:/Site/swargadwara_puri/db/migrate/2015041
9131135_create_users.rb:3:in `change'
C:in `migrate'
20150419131135_create_users.rb
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :contact_name
t.string :login_id
t.string :password_hash
t.string :password_salt
t.string :phone
t.string :address
t.timestamps
end
end
end
我之前在同一个数据库中有一个名为User的表。我也试过命令rake db:migrate VERSION=201504......
仍然得到同样的错误。请帮我解决此错误并成功创建新表。
答案 0 :(得分:2)
在这种情况下的问题是您已经创建了User
表,并且您的20150419131135_create_users.rb
迁移文件尝试再次创建用户表。所以我建议你在本地系统中备份这个文件。然后从db / migration目录中临时删除此文件。然后运行
rake db:migrate
它将解决您的问题。
现在,正如你在聊天中所说的那样,你没有任何其他的create_user迁移文件,我想你可能会丢失你在创建User
表之前创建的迁移文件,或者你可能以不同的方式创建了User表(不是rake db:migrate
,因为你在迁移目录中没有这样的任何其他文件)。
所以,请遵循:
20150419131135_create_users.rb
文件放入db / migrate目录rake db:migrate
,这将创建您的User
表格通过这种方式,您的迁移问题将永久解决,您甚至不会丢失User
表的现有数据。
答案 1 :(得分:0)
我的挑剔解决方案但是当我收到此错误时它会起作用,
评论您的迁移def up
内容。执行rake db:migrate
,然后rake db:rollback
执行您的评论迁移版本。然后取消评论def up
方法内容并执行rake db:migrate
。
答案 2 :(得分:0)
您可以删除数据库并再次创建
rake db:drop && rake db:create && rake db:migrate