我是Ruby和Rails的新手。所以这可能是一个简单的解决方案。对不起,如果是的话。
我最近安装了Ruby-on-Rails,并开始关注rubyonrails.org上的教程,该教程展示了如何创建一个简单的博客。一切都运行正常,直到我进入第5.5节。我去运行db:migrate并且它给了我一个错误。
|D:\Documents\Programs\Ruby\blog>rake db:migrate
== 20141216061542 CreateArticles: migrating ===================================
-- create_table(:articles)
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "articles" already exists: CREATE TABLE "articles" ("id" INTEGER
PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "text" text, "created_at" datetime,
"updated_at"
datetime) D:/Documents/Programs/Ruby/blog/db/migrate/20141216061542_create_articles.rb:3:in
`change
'
C:in `migrate'
ActiveRecord::StatementInvalid: SQLite3::SQLException: table "articles" already exists: CREATE
TABLE
"articles" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar(255), "text" text,
"created_at" datetime, "updated_at" datetime)
D:/Documents/Programs/Ruby/blog/db/migrate/20141216061542_create_articles.rb:3:in `change'
C:in `migrate'
SQLite3::SQLException: table "articles" already exists
D:/Documents/Programs/Ruby/blog/db/migrate/20141216061542_create_articles.rb:3:in `change'
C:in `migrate'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
我启动服务器以查看它会显示什么,它给了我这个:
ActiveRecord::PendingMigrationError
Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development
从那以后,它一直在这样做。我已经尝试通过删除项目来重新开始。(不完全确定这是否是一个很好的举措。)我试过查看代码。我没有尝试任何东西给了我任何关于该做什么的提示。
有没有办法摆脱这些错误?
提前谢谢。
编辑: 我尝试使用' rake db:reset'来重置数据库,但它只是给了我这个:
|D:\Documents\Programs\Ruby\blog\app\views\articles>rake db:reset
(in D:/Documents/Programs/Ruby/blog)
Permission denied @ unlink_internal - D:/Documents/Programs/Ruby/blog/db/development.sqlite3
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/fileutils.rb:1460:in `unlink'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/fileutils.rb:1460:in `block in remove_file'
C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/fileutils.rb:1468:in `platform_support'
...
rake aborted!
Errno::EACCES: Permission denied @ unlink_internal -
D:/Documents/Programs/Ruby/blog/db/development.
sqlite3
Tasks: TOP => db:schema:load
(See full trace by running task with --trace)
为了便于阅读,我缩短了它。
这是我的create_articles迁移文件:
class CreateArticles < ActiveRecord::Migration
def change
create_table :articles do |t|
t.timestamps
end
end
end
答案 0 :(得分:2)
您已经创建了该特定表格。从您的终端试试这个:
rake db:drop db:create db:migrate
或者:
rake db:reset db:migrate
所以基本上,你将从头开始数据库,这将避免当前的错误。
请注意,对于新迁移,您只运行'rake db:migrate'命令,否则您的现有数据将会丢失。
如果您在生产环境中遇到此问题,请确保您执行“其他操作” - 当然您不希望牺牲生产数据库数据。
答案 1 :(得分:0)
好吧很明显,你已经有了表格文章,并且你正在尝试创建一个新文章。
两个选项:
将create_articles添加到您的问题中,可以帮助您解决问题。
答案 2 :(得分:0)
删除数据库
rake db:drop
再次迁移
rake db:migrate
您已经创建了文章表格。所以你需要删除它并再次迁移它。