我是RoR的新手,我不断收到此错误消息:
$ rake db:migrate
== CreateUsers: migrating ====================================================
-- create_table(:users)
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id"
INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "email" varchar
(255), "created_at" datetime, "updated_at" datetime)
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
我一直在寻找解决方案3天,但我似乎找不到任何对我有用的东西。
提前感谢您的帮助:) PS - 我正在运行Windows。
答案 0 :(得分:7)
table "users" already exists
似乎是个问题。您是否尝试使用某些SQLITE admin tool从数据库中手动删除该表?
或者您可以在迁移脚本中包含一个删除表(应该在db / migrate文件夹中调用create_users.rb)。在def up
内插入drop_table :users
:
def up
drop_table :users
create_table :users do |t|
t.string :name
#...
t.timestamps
end
哦,我记得从我的RoR时间开始,表名“Users”可能会导致问题。可能这是相关的。
答案 1 :(得分:7)
不确定您是否关注了Michael Hartl关于RoR的教程。
但有人说在教程的步骤http://archive.railsforum.com/viewtopic.php?id=44944
中存在问题 rake db:drop:all
< ----------将擦除所有内容然后再次运行rake db:migrate
以解决问题。
祝你好运
答案 2 :(得分:1)
由于该表已存在,因此您需要在执行迁移之前删除/删除它。
简单,GUI方式是使用SQLite数据库浏览器(http://sourceforge.net/projects/sqlitebrowser/)。
单击带有Table-X图标的按钮。选择用户表单击删除。
然后运行rake db:migrate
Bada boom bada bing
答案 3 :(得分:0)
我有类似的问题,然后我做了
=> rake db:drop
=> rake db:create
=> rake db:migrate
工作得很好。
答案 4 :(得分:0)
我遇到了同样的问题,几个小时后我终于找到了解决方法
我放了 def self.up
create_table:用户执行| t |
def down drop_down:用户 结束 结束
然后使rake db:migrate和Magic !!!!