好的,我刚刚在Windows 7 64位计算机上重新安装了MySQL Server 5.5(32位到64位)。然后我采取步骤使用mysql2 for rails:
gem 'mysql2', '0.2.6'
gem 'rails', '3.0.7'
第1步:
rake db:drop
Couldn't drop store_development : #<Mysql2::Error: Unknown database 'store_development'>
奇怪,因为在MySQL Workbench中我只看到了测试数据库。
第2步:
$ rake db:migrate
rake aborted!
Unknown database 'store_development'
不知道为什么我会收到此错误,所以我现在尝试重置数据库。
第3步:
rake db:reset
(in C:/store)
Couldn't drop store_development : #<Mysql2::Error: Unknown database 'store_development'>
store_test already exists
-- create_table("business_online_stores", {:force=>true})
-> 0.1110s
-- create_table("business_retail_stores", {:force=>true})
-> 0.0740s
-- create_table("businesses", {:force=>true})
-> 0.0900s
-- create_table("products", {:force=>true})
-> 0.0810s
-- create_table("user_prices", {:force=>true})
-> 0.0720s
-- create_table("users", {:force=>true})
-> 0.1810s
-- initialize_schema_migrations_table()
-> 0.2800s
-- assume_migrated_upto_version(0, "db/migrate")
-> 0.0320s
You have 6 pending migrations:
20110909175650 DeviseCreateUsers
20110929161120 CreateUserPrices
20111004023516 CreateProducts
20111007023521 CreateBusinesses
20111009215120 CreateBusinessRetailStores
20111009215419 CreateBusinessOnlineStores
Run "rake db:migrate" to update your database then try again.
是的,测试数据库已经存在,但这个Ghost开发数据库在哪里?它如何重置迁移,但告诉我再次迁移它们。好吧,生病就像现在说的那样:
第4步:
$ rake db:migrate
(in C:/store)
== DeviseCreateUsers: migrating ==============================================
-- create_table(:users)
rake aborted!
An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'users' already exists: CREATE TABLE `users`
第5步:
$ rake db:migrate
rake aborted!
Unknown database 'store_development'
不可能,我进入我的MySQL Workbench并通过右键单击它们并执行必要的步骤来删除测试和开发数据库,因此即使我刷新它也没有任何存在,但是我得到关于数据库的错误存在。
如何解决此问题?
注意:0.2.7
给我同样的问题。
注意:这些是我的前两个迁移文件,只是包含了任何想要查看它们的人:https://gist.github.com/1341682
答案 0 :(得分:1)
只是一个想法,但Users
已经在电子邮件列中有条目了吗?我想知道现有的重复条目是否会阻止添加验证:unique=>true
只是为了检查,你想做什么?:
add_column :users, :email, :string
而不是add_index?
答案 1 :(得分:0)
我知道解决这个问题的唯一方法就是重新创建我的整个应用程序。