質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

5814閲覧

rails db:migrateでエラーが出ました

miiichat

総合スコア72

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2017/03/11 05:47

編集2017/03/12 00:07

###わからないこと

rails db:migrateでエラーが出ました。

$ bin/rails db:migrate RAILS_ENV=test == 20170227042251 CreateUsers: migrating ====================================== -- create_table(:users) rails aborted! StandardError: 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, "email" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) /home/vagrant/workspace/myblog/db/migrate/20170227042251_create_users.rb:3:in `change' /home/vagrant/workspace/myblog/bin/rails:9:in `require' /home/vagrant/workspace/myblog/bin/rails:9:in `<top (required)>' /home/vagrant/workspace/myblog/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' ActiveRecord::StatementInvalid: SQLite3::SQLException: table "users" already exists: CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar, "email" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) /home/vagrant/workspace/myblog/db/migrate/20170227042251_create_users.rb:3:in `change' /home/vagrant/workspace/myblog/bin/rails:9:in `require' /home/vagrant/workspace/myblog/bin/rails:9:in `<top (required)>' /home/vagrant/workspace/myblog/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' SQLite3::SQLException: table "users" already exists /home/vagrant/workspace/myblog/db/migrate/20170227042251_create_users.rb:3:in `change' /home/vagrant/workspace/myblog/bin/rails:9:in `require' /home/vagrant/workspace/myblog/bin/rails:9:in `<top (required)>' /home/vagrant/workspace/myblog/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace) [vagrant@localhost myblog]$ Mysql3::Error: Table 'users' already exists -bash: Mysql3::Error:: コマンドが見つかりません

rails test ができなくて、よくみたらmigrateでエラーが出ていました。
教えてくれると助かります。

###追記
<database.yml>

default: &default adapter: sqlite3 pool: 5 timeout: 5000 development: <<: *default database: db/development.sqlite3 test: <<: *default database: db/test.sqlite3 production: <<: *default database: db/production.sqlite3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

昨日同じような質問に答えた気もしますが
testとdevelopmentとproduction
で同じデータベースを参照している場合(database.ymlを確認してみてください)

bin/rails db:migrate RAILS_ENV=test
同じデータベースに同じ名前のテーブルを作ろうとする
ことになります。
つまりそれはデータを全て消すということに異ならないので
エラーが出るわけです。
そもそも、testとproductionのデータベースが同じことが間違っていると思いますが。
それで問題がないのなら(テスト時にデータが消えて問題ないなら)
bin/rails db:migrate RAILS_ENV=test
が成功しなくても次のステップに進んで問題ありません。

投稿2017/03/11 07:53

moke

総合スコア2241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miiichat

2017/03/11 09:14

回答ありがとうございます! rails tutorialをやっていて、rails t ができないのですがなにか原因があるのでしょうか? $ rails test Running via Spring preloader in process 17137 /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:573:in `check_pending!': (ActiveRecord::PendingMigrationError) Migrations are pending. To resolve this issue, run: bin/rails db:migrate RAILS_ENV=test from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:586:in `load_schema_if_pending!' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:592:in `block in maintain_test_schema!' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:823:in `suppress_messages' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:597:in `method_missing' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.1/lib/active_record/migration.rb:592:in `maintain_test_schema!' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/test_help.rb:15:in `<top (required)>' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `block in require' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require' from /home/vagrant/workspace/myblog/test/test_helper.rb:3:in `<top (required)>' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `block in require' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require' from /home/vagrant/workspace/myblog/test/controllers/account_activations_controller_test.rb:1:in `<top (required)>' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `block in require' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:259:in `load_dependency' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/dependencies.rb:293:in `require' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/test_unit/test_requirer.rb:11:in `block in require_files' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/test_unit/test_requirer.rb:10:in `each' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/test_unit/test_requirer.rb:10:in `require_files' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/test_unit/minitest_plugin.rb:86:in `plugin_rails_init' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:80:in `block in init_plugins' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:78:in `each' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:78:in `init_plugins' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:129:in `run' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/test_unit/minitest_plugin.rb:73:in `run' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:62:in `block in autorun' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require' from -e:1:in `<main>'
moke

2017/03/11 09:44

すみません、嘘ついたかもしれないです。 とりあえずtest用のdbを作成して config/database.yml のtestの項目をtest用のdatabaseに指定してください 指定されている場合はtest用databaseのすべてのテーブルを削除し てもう一度migrationを行なってください やってみてわからなかった場合はdatabase.ymlを質問に追記してください
miiichat

2017/03/12 00:11

回答ありがとうございます! とりあえず載せときます。 test用databaseの作り方は、これでいいでしょうか? rake db:create RAILS_ENV=test 今, rails tutorialをやっているのですが、そのような指示はなかったと思います。
miiichat

2017/03/12 00:23

rails t をすると、 ActiveRecord::PendingMigrationError とでますが、関係ありますか?
miiichat

2017/03/13 01:15

githubに置いてあったものを持ってきてやり直しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問