Проблема с учебником по Ruby-on-Rails
Я новичок в 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 ответа
Вы уже создали эту конкретную таблицу. Попробуйте это с вашего терминала:
rake db:drop db:create db:migrate
Или же:
rake db:reset db:migrate
В общем, вы начнете свою базу данных с нуля, что позволит избежать текущей ошибки.
Обратите внимание, что для новых миграций вы только запускаете команду 'rake db:migrate', иначе ваши существующие данные будут потеряны.
Позже, если вы столкнетесь с этой проблемой в производственной среде, убедитесь, что вы делаете "что-то еще" - конечно, вы не захотите жертвовать данными своей производственной базы данных.
Брось БД
rake db:drop
И перенес это еще раз
rake db:migrate
Вы уже создали статьи статей. Так что вам нужно удалить его и перенести еще раз.
Ну, кажется очевидным, у вас уже есть настольные статьи, и вы пытаетесь создать новую.
Два варианта:
- миграция комментариев со статьями: rake db: миграция, раскомментирование для другой среды (если есть)
- очистите базу данных и снова запустите миграцию.
Добавьте create_articles к вашему вопросу, это может помочь решить проблему.