Bei der Installation von devise ist der folgende Fehler aufgetreten. Führen Sie nach der Bundle-Installation von gem Rails g devise: install aus. Nach dem Ausführen von Rails G Devise User ist dies der Fehler, der beim Ausführen von Rake DB: Migrate aufgetreten ist.
Error
Mysql2::Error: Table 'development.users' doesn't exist
/Users/projects/db/migrate/20201016082907_add_devise_to_users.rb:7:in `block in up'
/Users/projects/db/migrate/20201016082907_add_devise_to_users.rb:5:in `up'
/Users/projects/bin/rails:9:in `<top (required)>'
/Users/projects/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Caused by:
ActiveRecord::StatementInvalid: Mysql2::Error: Table 'development.users' doesn't exist
/Users/projects/db/migrate/20201016082907_add_devise_to_users.rb:7:in `block in up'
/Users/projects/db/migrate/20201016082907_add_devise_to_users.rb:5:in `up'
/Users/projects/bin/rails:9:in `<top (required)>'
/Users/projects/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Caused by:
Mysql2::Error: Table 'development.users' doesn't exist
/Users/projects/db/migrate/20201016082907_add_devise_to_users.rb:7:in `block in up'
/Users/projects/db/migrate/20201016082907_add_devise_to_users.rb:5:in `up'
/Users/projects/bin/rails:9:in `<top (required)>'
/Users/projects/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)
=================================
Lösungen Ich war ein Anfänger und wusste nicht, was los war Ich habe überprüft, welche der aktuellen Tabellen funktioniert.
rails db:migrate status
Ergebnis
〇〇-no-MacBook% rake db:migrate:status
database: development
Status Migration ID Migration Name
--------------------------------------------------
up 20201013135213 Create items
up 20201014013111 Create users
down 20201016082907 Add devise to users
Vor der Bundle-Installation entwickeln Sie hier Ich habe festgestellt, dass die Benutzertabelle, die ich als Test erstellt habe, erstellt wurde.
Möglicherweise benötigen Sie es nicht, aber sobald Sie die folgenden Schritte ausgeführt haben, um die Tabelle wiederherzustellen
rails db:rollback
Alle sind unten. Löschen Sie dann unnötige 20201014013111 Benutzer erstellen
rm -rf db/migrate/20201014013111_create_users.rb
Nach dem Ablegen des Tisches
〇〇-no-MacBook% rake db:migrate:status
database: NF_development
Status Migration ID Migration Name
--------------------------------------------------
down 20201013135213 Create items
down 20201016082907 Add devise to users
Und
〇〇-no-MacBook% rails db:migrate
== 20201013135213 CreateItems: migrating ======================================
-- create_table(:items)
-> 0.0173s
== 20201013135213 CreateItems: migrated (0.0174s) =============================
== 20201016082907 AddDeviseToUsers: migrating =================================
-- change_table(:users)
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
Ich habe einen weiteren Fehler erhalten. Die Ursache ist, dass bei der Installation von devise das, was durch create erstellt werden kann, geändert wird und ein Fehler auftritt. Ich habe es unten geändert.
class CreateItems < ActiveRecord::Migration[6.0]
def change→create
change→create_table :items do |t|
t.string :name
t.string :text
t.text :image
t.integer :category_id
t.integer :item_id
t.timestamps
end
end
end
Dann entfernt, um Gerät zu deinstallieren
〇〇-no-MacBook% rails d devise user
Running via Spring preloader in process 73770
Deprecation warning: Expected boolean default value for '--orm'; got :active_record (string).
This will be rejected in the future unless you explicitly pass the options `check_default_type: false` or call `allow_incompatible_default_type!` in your code
You can silence deprecations warning by setting the environment variable THOR_SILENCE_DEPRECATION.
invoke active_record
remove db/migrate/20201016082907_add_devise_to_users.rb
remove app/models/user.rb
invoke test_unit
remove test/models/user_test.rb
remove test/fixtures/users.yml
route devise_for :users
Und schließlich habe ich devise wieder installiert und es funktioniert gut.
〇〇-no-MacBook%rails g devise user
Running via Spring preloader in process 73899
Deprecation warning: Expected boolean default value for '--orm'; got :active_record (string).
This will be rejected in the future unless you explicitly pass the options `check_default_type: false` or call `allow_incompatible_default_type!` in your code
You can silence deprecations warning by setting the environment variable THOR_SILENCE_DEPRECATION.
invoke active_record
create db/migrate/20201016152820_devise_create_users.rb
create app/models/user.rb
invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
insert app/models/user.rb
route devise_for :users
Da ich ein Anfänger bin, habe ich ein paar Stunden gebraucht. Ich hoffe es hilft jemandem.
Referenz Qiita: [Rails] Migrationsdatei löschen https://qiita.com/ISSO33/items/33a935cb3255c269bef2
Qitta: Rails-Produktionsumgebung ActiveRecord :: StatementInvalid (Mysql2 :: Fehler: Table'table name 'existiert nicht): https://qiita.com/ashketcham/items/a0d0a2ac788779895fb4
Qiita:Mysql2::Error::ConnectionError: Access denied for user Lösung für 'root' @ 'localhost' (mit Passwort: YES) https://qiita.com/naota7118/items/b62d71484e21d6739d68
Qiita: Gerät deinstallieren https://qiita.com/NT90957869/items/8c5285775a67a51f03e1
teratall: [Rails] -Fehler während der Installation des Geräts https://teratail.com/questions/214948
Recommended Posts