Ich lerne das Rails-Tutorial. Während des Trainings und der Durchführung von Tests traten häufig Fehler auf
RuntimeError: RuntimeError: database is locked
ActiveRecord::StatementInvalid: ActiveRecord::StatementInvalid: SQLite3::BusyException: database is locked
Jetzt, da diese vermieden werden können, werde ich sie aufschreiben.
Übrigens wird dieser Fehler bis Kapitel 9, selbst wenn er auftritt, mehrmals wiederholt.
rails test
Dann konnte ich es ungefähr zum 5. Mal bestehen. (Es war sehr mühsam) Egal wie oft ich es in Kapitel 9 ausgeführt habe, ich konnte es nicht bestehen.
① An der Schienenkonsole
ActiveRecord::Base.connection.execute("BEGIN TRANSACTION; END;")
Lauf
Ergebnis keine Wirkung
(2) Ändern Sie den Timeout-Wert in der Datei database.yml von 5000 auf 15000.
Ergebnis keine Wirkung
③ Benennen Sie die Datei db / test.sqlite3 um
#sample_app/Im Datenbankverzeichnis
mv test.sqlite3 new.test.sqlite3
Kopieren Sie mit demselben Dateinamen wie das Original.
cp -p new.test.sqlite3 test.sqlite3
Löschen Sie die Datei new.test.sqlite3
Ergebnis keine Wirkung
④ Wechseln Sie zu DB Browser für SQLite und führen Sie die folgende Verknüpfung aus Ctrl + S (Ich denke, Sie können auch oben links unter [Datei] auf [Änderungen schreiben] klicken. Ich konnte übrigens nicht klicken, da keine Änderungen vorgenommen wurden. Ich habe Strg + S mit einem Befehl versucht, obwohl ich wusste, dass er bedeutungslos ist. T) Nur für den Fall Ctrl + Shift + S
Beenden Sie nach dem Ausführen der beiden Verknüpfungen den DB Browser für SQLite, beenden Sie alle Terminals usw. und starten Sie ihn neu.
Ergebnis keine Wirkung
⑤ In der Datei test / test_help.rb
#Wahrscheinlich über die 8. und 9. Zeile
parallelize(workers: :number_of_processors, with: :threads)
Auskommentieren
# parallelize(workers: :number_of_processors, with: :threads)
Als Ergebnis wurde kein Fehler angezeigt und der Test bestanden !!
①②④ https://stackoverflow.com/questions/58854780/what-does-the-database-is-locked-error-message-mean-in-ruby-on-rails-testing ③ http://fanblogs.jp/scripts/archive/61/0 ⑤ https://stackoverflow.com/questions/58854780/what-does-the-database-is-locked-error-message-mean-in-ruby-on-rails-testing (letzte Antwort)
Ich hoffe, es ist hilfreich für diejenigen, die unter dem gleichen Fehler leiden.