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

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

新規登録して質問してみよう
ただいま回答率
85.35%
SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

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

Q&A

2回答

2346閲覧

Railsチュートリアル2章 rails db:migrate エラー

kotako

総合スコア4

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/03/01 18:15

編集2020/03/02 10:55

前提・実現したいこと

今回初め質問します。拙い文章で分りにくいかもしれませんがご教授願います。

~実行環境~
Rails version 5.1.6
Ruby version 2.6.5-p114 (x64-mingw32)
RubyGems version 3.1.2

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

Railsチュートリアル2章で初めてマイグレートする際にこのようなエラーが起きます。

PS C:\Users\username\environment\toy_app> rails db:migrate rails aborted! ArgumentError: wrong number of arguments (given 2, expected 0) bin/rails:4:in `require' bin/rails:4:in `<main>' Tasks: TOP => db:migrate (See full trace by running task with --trace)

リスト 2.4を実行するまでは基本的に記載された通り進めました。
途中rails sをする際にsqlite3_nativeがないとエラーが起きたため
「rails s」で「sqlite3/sqlite3_native」が出た時の対処法
この記事を参考にさせて頂いたところ問題解決しました。

試したこと

3,4回ほどやり直してもエラー文は特に変わりませんでした。また、

$ rails db:version $ rails db:charset $ rails db:create etc...

上のコマンドを入力したところ

rails aborted! ArgumentError: wrong number of arguments (given 2, expected 0) bin/rails:4:in `require' bin/rails:4:in `<main>'

どのコマンドもこのエラーが出ます。

また使用しているDBはsqlite3を使用しておりrails dbconsoleをするとコンソールは開きます。

補足情報

rails db:migrate --traceした結果です。

PS C:\Users\username\environment\toy_app> rails db:migrate --trace ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment ** Invoke db:load_config (first_time) ** Execute db:load_config ** Execute db:migrate rails aborted! ArgumentError: wrong number of arguments (given 2, expected 0) C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/sqlite3_adapter.rb:30:in `initialize' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/sqlite3_adapter.rb:30:in `new' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/sqlite3_adapter.rb:30:in `sqlite3_connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:759:in `new_connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:803:in `checkout_new_connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:782:in `try_to_checkout_new_connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:743:in `acquire_connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:500:in `checkout' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:374:in `connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:931:in `retrieve_connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_handling.rb:116:in `retrieve_connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_handling.rb:88:in `connection' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/schema_migration.rb:20:in `table_exists?' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/schema_migration.rb:24:in `create_table' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/migration.rb:1125:in `initialize' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/migration.rb:1007:in `new' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/migration.rb:1007:in `up' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/migration.rb:985:in `migrate' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/tasks/database_tasks.rb:171:in `migrate' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/railties/databases.rake:58:in `block (2 levels) in <top (required)>' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `block in execute' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `each' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:281:in `execute' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:219:in `block in invoke_with_call_chain' C:/Ruby26-x64/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:199:in `invoke_with_call_chain' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/task.rb:188:in `invoke' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:160:in `invoke_task' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block (2 levels) in top_level' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `each' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:116:in `block in top_level' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:125:in `run_with_threads' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:110:in `top_level' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/railties-5.1.6/lib/rails/commands/rake/rake_command.rb:21:in `block in perform' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/rake-13.0.1/lib/rake/application.rb:186:in `standard_exception_handling' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/railties-5.1.6/lib/rails/commands/rake/rake_command.rb:18:in `perform' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/railties-5.1.6/lib/rails/command.rb:46:in `invoke' C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/railties-5.1.6/lib/rails/commands.rb:16:in `<top (required)>' bin/rails:4:in `require' bin/rails:4:in `<main>' Tasks: TOP => db:migrate

たくさんの記事を見て調べましたが、ごく稀に似たようなエラーが起きている人はいても解決までたどり着いている記事がなくRails初学者である私にとっては手に余る状態です。もしお分かりなる方がいらっしゃれば知恵を貸して頂ければ幸いです。

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

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

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

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

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

kotako

2020/03/02 10:56

失礼致しました。教えて頂きありがとうございます。
guest

回答2

0

※ 以下は手元で再現させていないため予想です。

結論:使用しているsqlite3のgemのバージョンを確認するとよいかもしれません。


「補足情報」節の以下のスタックトレースから、バージョン5.1.6のActiveRecordの実装を確認します。

stacktrace

1C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/sqlite3_adapter.rb:30:in `initialize' 2C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/sqlite3_adapter.rb:30:in `new' 3C:/Ruby26-x64/lib/ruby/gems/2.6.0/gems/activerecord-5.1.6/lib/active_record/connection_adapters/sqlite3_adapter.rb:30:in `sqlite3_connection'

一部を引用すると以下です。

activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb:

ruby

1 db = SQLite3::Database.new( 2 config[:database].to_s, 3 results_as_hash: true 4 )

エラーの内容は引数の数についてでした。また、引数の内容によって生じるエラーではないため、(どこかでActive Recordの実装を上書きしていない限り)作成されているアプリケーションのコードに原因がある可能性は低いと見ます。おそらくメソッドの形式に変更があったのでしょう。

また、本ファイルの冒頭でsqlite3 gemを読み込んでいます。このgemで定義されたSQLite3::Database.initializeが実行されそうです。

ちょっと気になるのはソースコード上で後方互換性のあるようなバージョン指定をしている点です。このようなことは起こりにくいはずです。


一部Ruby on Railsのソースコードを引用しました。こちらはMITライセンスのもとに配布されます。

投稿2022/04/24 12:56

gemmaro

総合スコア358

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

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

0

sqlは起動していますでしょうか。
また、どのファイルをmigrateしようとしているのでしょうか。

投稿2020/03/12 10:06

jack_kanzaki

総合スコア106

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

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

kotako

2020/03/12 21:36

初めの質問ですが、rails dbをするとコマンドラインツールが起動します。接続ができるようにSQLiteのサイトにあるsqlite-tools-win32-x86-3310100の中身(sqlite3.exe等)をrubyのbinフォルダにコピーしました。 二つ目の質問ですが、チュートリアルのリスト2.2以降の $ rails generate scaffold User name:string email:string で生成されたファイルだと思います。ちなみに中身が下記になります。 class CreateUsers < ActiveRecord::Migration[5.1] def change create_table :users do |t| t.string :name t.string :email t.timestamps end end end
jack_kanzaki

2020/03/13 00:15

私は普段,mysqlを使っていので、設定方法が違うかもしれないのですが、 mysql service startなど(実行環境によってコマンドは異なる)を使ってsqlを起動しています。 加えて、config/database.ymlの設定なども必要だと思うので確認してみてください。
kotako

2020/03/13 12:13

送って頂いたURLの手順でsqliteを起動することができました。 ymlファイルですが、チュートリアルでソースコードがgithub上にあがっているので照らし合わせ確認したところ、同じ状態でした。
jack_kanzaki

2020/03/13 12:28

rails db:resetなどで一度リセットすることも一つの方法かもしれません。(どこの時点でエラーが生じたのか、再確認するため。)
kotako

2020/03/13 12:46

そのコマンドを入力しても、同じエラーが出ます。また本文にも書いている通り rails db:version rails db:charset rails db:create も一切受け付けません
jack_kanzaki

2020/03/13 13:02

rails db:rollbackもしくはrails d modelなどでmigrationファイルを消してみて下さい
kotako

2020/03/13 13:51

rollbackも同じエラーが起きます。rails d modelを実行してやり直してみましたが、変わらずエラーが起きます。
jack_kanzaki

2020/03/13 13:54

すみません、今の私ではこれくらいの回答しかできません。
kotako

2020/03/13 13:59

いえ、貴重なお時間にお付き合いくださいましてありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問