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

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

ただいまの
回答率

90.48%

  • Ruby

    9620questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    9030questions

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

初心者です。railsで、テーブルが存在しないといわれました。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,124

gongon10600

score 1

前提・実現したいこと

ruby 初心者です。
ruby on rails 5.1.3 で参考書に沿って勉強していたところ、以下のようなエラーメッセージが発生しました。

発生している問題・エラーメッセージ

SQLite3::SQLException: no such table: messages: SELECT "messages".* FROM "messages"```  

messages というテーブルがないのかなと思い、 rails c から ActiveRecord::Base.connection.tables  を実行したところ 確認することができませんでした。

しかし、rails g model message、rails db:migrate を行ったので、テーブルを作れたものだと考えています。。。

class CreateMessages < ActiveRecord::Migration[5.1]  
def change  
create_table :messages do |t|  
t.integer :person_id  
t.text :title  
t.text :message  

t.timestamps  
end  
end  
end  

どこがどのように間違っているのか、また、今回私が行った ActiveRecord::Base.connection.tables 等の確認方法について間違えがありましたら、教えていただけるとありがたいです。 よろしくお願いいたします。

追記です!! migration 実行時のログです

== 20170826062313 CreatePeople: migrating =====================================  
-- create_table(:people)  
rake aborted!  
StandardError: An error has occurred, this and all later migrations canceled:  

SQLite3::SQLException: table "people" already exists: CREATE TABLE "people" ("id             " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" text, "age" integer, "mail"              text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)  
/home/vagrant/rails_lessons/RailsApp/db/migrate/20170826062313_create_people.rb:             3:in `change'
ActiveRecord::StatementInvalid: SQLite3::SQLException: table "people" already ex             ists: CREATE TABLE "people" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "n             ame" text, "age" integer, "mail" text, "created_at" datetime NOT NULL, "updated_             at" datetime NOT NULL)
/home/vagrant/rails_lessons/RailsApp/db/migrate/20170826062313_create_people.rb:             3:in `change'  
SQLite3::SQLException: table "people" already exists  
/home/vagrant/rails_lessons/RailsApp/db/migrate/20170826062313_create_people.rb:             3:in `change'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

補足情報(言語/FW/ツール等のバージョンなど)

centos からvagrant を起動させて動作させています。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • h_daido

    2017/09/02 22:47

    だとしたら、migrationが失敗していますね。migration実行時のログとかないですか?

    キャンセル

  • gongon10600

    2017/09/03 12:45 編集

    migrationログを質問内容に追記させていただきました。
    以前に作ったpeople tableは出てきましたが、messages table についての記述はありません。
    よろしければ確認お願いいたします。

    キャンセル

  • gongon10600

    2017/09/03 15:51

    何度もご教授くださりありがとうございました。無事、解決することができました!!

    キャンセル

回答 3

checkベストアンサー

+1

SQLite3::SQLException: table "people" already exists:

原因はここのはずです。同じメッセージが何度も出現しています。

Qiitaを参考に

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/03 15:50

    ご回答ありがとうございました。
    無事、解決することができました!

    キャンセル

+1

マイグレーションスクリプトの実行はうまく行っているでしょうか?

rails db:migrate ではなく rake db:migrate です。
実行打ち間違い等でしたら申し訳御座いません。

ご確認ください。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/02 14:06

    ご回答ありがとうございます。
    参考書には、rails db:migrateと書いてあり調べてみると、Ruby on Rails5からは、railsコマンドでもrakeコマンドと同様の動作をするみたいです。
    念のため、rake db:migrate しましたが、改善されませんでした。

    キャンセル

+1

質問文にある操作と同様のことを行ってみましたが、エラーはおこりませんでした。

  $ rails new sample
  $ cd sample
  $ rails g model message person_id:integer title:text message:text
  $ cat cat db/migrate/20170901231727_create_messages.rb
  $ rails db:migrate
  $ rails c
  > Message.all
  > ActiveRecord::Base.connection.tables


スクリーンショットをしめします。
(db;migrate の実行を忘れていて、messages テーブルが無いエラーがでてます。
でも、db:migrate 実行して、エラーは解消されています)
イメージ説明

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/02 14:17

    ご回答ありがとうございます。
    私のほうは解決されませんでした。

    キャンセル

同じタグがついた質問を見る

  • Ruby

    9620questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ruby on Rails

    9030questions

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