Ruby-on-Rails教程麻烦

时间:2014-12-16 13:11:01

标签: ruby-on-rails ruby rake dbmigrate

我是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

3 个答案:

答案 0 :(得分:2)

您已经创建了该特定表格。从您的终端试试这个:

rake db:drop db:create db:migrate

或者:

rake db:reset db:migrate

所以基本上,你将从头开始数据库,这将避免当前的错误。

请注意,对于新迁移,您只运行'rake db:migrate'命令,否则您的现有数据将会丢失。

如果您在生产环境中遇到此问题,请确保您执行“其他操作” - 当然您不希望牺牲生产数据库数据。

答案 1 :(得分:0)

好吧很明显,你已经有了表格文章,并且你正在尝试创建一个新文章。

两个选项:

  • 使用文章进行评论迁移rake db:migrate,取消注释其他环境(如果有)
  • 清除数据库并再次运行迁移。

将create_articles添加到您的问题中,可以帮助您解决问题。

答案 2 :(得分:0)

删除数据库

rake db:drop

再次迁移

rake db:migrate

您已经创建了文章表格。所以你需要删除它并再次迁移它。