この投稿を見ました:
Rails/ActiveRecord/SQLite3: テスト環境でレコードを保存できません
また、sqlite バージョンを最新 (3.7.17) にアップグレードした後も、次のエラーが発生します。
ActiveRecord::StatementInvalid: SQLite3::SQLException: 「SAVEPOINT」付近: 構文エラー: SAVEPOINT active_record_1
いつでも何かを作成しようとします。フィクスチャをロードするだけであれば、すべて問題ありません。
「rails db」を実行して、rails が更新された sqlite3 バージョンを使用していることを確認しました。
私の開発環境では、一日中エラーなしでオブジェクトを作成できます (作成後にオブジェクトに別のオブジェクトを作成させることさえできます)。
これが起こっている私のテスト環境の特別な点は何ですか? どうすれば修正できますか?
編集:
テスト データベースを削除し、rake:db:create と rake:db:migrate をやり直しても、同じ問題が発生します。
「Rails コンソール テスト」を実行すると、テスト環境を問題なく使用できるようになり、1 日中オブジェクトを作成して既存のフィクスチャを確認できます。エラーが発生するのは、「rake test:units」と入力したときだけです... (最初はエラーがありましたが、1 つのエラーは正当なものでした (なぜ開発環境でエラーが発生しなかったのかわかりません。アダプターエラーは、明らかに「rails console RAILS_ENV="test" を実行することになっていないため、"RAILS_ENV=test" という環境用のアダプターを探していたためです)
編集:「gem uninstall sqlite3」と入力すると、アンインストールされます。次に「bundle install」と入力すると、再インストールに問題があります...現在作業中です。
/home/jenny/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb --with-sqlite3-dir=/usr/local/bin/sqlite3 checking for sqlite3.h... *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check
詳細については、mkmf.log ファイルを参照してください。構成オプションが必要な場合があります。
「gem install sqlite3」を個別に入力すると、問題なく動作し、「bundle install」で動作します。ただし、「rake test:units」には同じエラーがあります。
編集:「which sqlite3」と入力すると、「/usr/local/bin/sqlite3」が出力されます
私は sqlite3 ヘッダーが存在することさえ知らなかったので、それらをインストールしたとは思えません。これを確認する方法を見つけて、それが役立つかどうかを確認します。
編集:
メイン サイトで sqlite3 ヘッダーをダウンロードする場所がどこにもありません。ソースとプリコンパイル済みの Linux バイナリだけです。ソースに特別なヘッダーはないようですが、あったとしてもプリコンパイル済みバイナリに含まれるのではないでしょうか?
編集: gem を手動でインストールしたときに発生しないバンドラー sqlite3 インストール エラーへのリンク
編集:デバイスの問題ではありません。そうだと思ったのですが、テスト コードではなく、フィクスチャで別のオブジェクトを作成しているだけであることがわかりました。
そのため、デバイス ユーザーまたはその他のタイプのオブジェクトをフィクスチャで 1 日中作成できますが、単体テストで作成しようとすると、セーブ ポイント エラーが発生します。単体テストでフィクスチャを保存しようとする場合も同じです。