Mysql2::Error: Table 'my_database.users' doesn't exist
Mysql2::Error: Table 'my_database.users' doesn't exist
每当我 运行 bin/rails db:migrate
在本地 运行 进入以下错误:
bin/railsdb:migrate
== 20200108204517 AddFirstAndLastNameToUsers: migrating =======================
-- add_column(:users, :first_name, :string, {:limit=>255, :null=>false})
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'monaco_development.users' doesn't exist
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:202:in `block (2 levels) in execute'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:201:in `block in execute'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `block (2 levels) in log'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:717:in `block in log'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:708:in `log'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:200:in `execute'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/mysql/database_statements.rb:41:in `execute'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:591:in `add_column'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:890:in `block in method_missing'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:858:in `block in say_with_time'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:858:in `say_with_time'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:879:in `method_missing'
/Users/robskrob/code/projects/kingandpartners/monaco/db/migrate/20200108204517_add_first_and_last_name_to_users.rb:3:in `change'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:828:in `exec_migration'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:811:in `block in migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:473:in `with_connection'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:810:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1001:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1311:in `block in execute_migration_in_transaction'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1364:in `ddl_transaction'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1310:in `execute_migration_in_transaction'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1282:in `block in migrate_without_lock'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1281:in `each'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1281:in `migrate_without_lock'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1229:in `block in migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1382:in `with_advisory_lock'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1229:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1061:in `up'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1036:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/railties/databases.rake:85:in `block (3 levels) in <main>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/railties/databases.rake:83:in `each'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/railties/databases.rake:83:in `block (2 levels) in <main>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/railties-6.0.1/lib/rails/command.rb:48:in `invoke'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/railties-6.0.1/lib/rails/commands.rb:18:in `<main>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `block in require'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `require'
/Users/robskrob/code/projects/kingandpartners/monaco/bin/rails:9:in `<top (required)>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/bin/spring:49:in `<top (required)>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
/Users/robskrob/code/projects/kingandpartners/monaco/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
创建用户 table 20200103171631_devise_create_users.rb
的迁移先于当前失败的迁移 20200108204517_add_first_and_last_name_to_users.rb
。所以当然这个错误是有道理的——创建用户 table 的迁移不是 运行 首先。但是,我的问题是,为什么 0200108204517_add_first_and_last_name_to_users.rb
运行ning 在创建用户 20200103171631_devise_create_users.rb
的迁移之前?我相信文件上的日期 20200103171631_devise_create_users.rb
有更早的日期,应该在 0200108204517_add_first_and_last_name_to_users.rb
.
之前 运行ning
我的 rails 应用正在使用:
gem 'rails', '~> 6.0.1'
gem 'mysql2', '>= 0.4.4'
gem 'devise', '~> 4.7.1'
你检查过my_database.schema_migrationstable了吗?您可能会发现 Rails 已经将此迁移标记为已执行。
见https://edgeguides.rubyonrails.org/active_record_migrations.html#old-migrations
用户 table 可能不存在,因为它可能已被手动删除。
每当我 运行 bin/rails db:migrate
在本地 运行 进入以下错误:
bin/railsdb:migrate
== 20200108204517 AddFirstAndLastNameToUsers: migrating =======================
-- add_column(:users, :first_name, :string, {:limit=>255, :null=>false})
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
Mysql2::Error: Table 'monaco_development.users' doesn't exist
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:202:in `block (2 levels) in execute'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:201:in `block in execute'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `block (2 levels) in log'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:717:in `block in log'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_adapter.rb:708:in `log'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:200:in `execute'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/mysql/database_statements.rb:41:in `execute'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/schema_statements.rb:591:in `add_column'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:890:in `block in method_missing'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:858:in `block in say_with_time'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:858:in `say_with_time'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:879:in `method_missing'
/Users/robskrob/code/projects/kingandpartners/monaco/db/migrate/20200108204517_add_first_and_last_name_to_users.rb:3:in `change'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:828:in `exec_migration'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:811:in `block in migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:473:in `with_connection'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:810:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1001:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1311:in `block in execute_migration_in_transaction'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1364:in `ddl_transaction'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1310:in `execute_migration_in_transaction'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1282:in `block in migrate_without_lock'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1281:in `each'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1281:in `migrate_without_lock'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1229:in `block in migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1382:in `with_advisory_lock'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1229:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1061:in `up'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/migration.rb:1036:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/railties/databases.rake:85:in `block (3 levels) in <main>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/railties/databases.rake:83:in `each'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activerecord-6.0.1/lib/active_record/railties/databases.rake:83:in `block (2 levels) in <main>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:23:in `block in perform'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/railties-6.0.1/lib/rails/commands/rake/rake_command.rb:20:in `perform'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/railties-6.0.1/lib/rails/command.rb:48:in `invoke'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/railties-6.0.1/lib/rails/commands.rb:18:in `<main>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `block in require_with_bootsnap_lfi'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:21:in `require_with_bootsnap_lfi'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/bootsnap-1.4.5/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `block in require'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:291:in `load_dependency'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/activesupport-6.0.1/lib/active_support/dependencies.rb:325:in `require'
/Users/robskrob/code/projects/kingandpartners/monaco/bin/rails:9:in `<top (required)>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/client.rb:30:in `run'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/bin/spring:49:in `<top (required)>'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load'
/Users/robskrob/.rvm/gems/ruby-2.6.0/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>'
/Users/robskrob/code/projects/kingandpartners/monaco/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
创建用户 table 20200103171631_devise_create_users.rb
的迁移先于当前失败的迁移 20200108204517_add_first_and_last_name_to_users.rb
。所以当然这个错误是有道理的——创建用户 table 的迁移不是 运行 首先。但是,我的问题是,为什么 0200108204517_add_first_and_last_name_to_users.rb
运行ning 在创建用户 20200103171631_devise_create_users.rb
的迁移之前?我相信文件上的日期 20200103171631_devise_create_users.rb
有更早的日期,应该在 0200108204517_add_first_and_last_name_to_users.rb
.
我的 rails 应用正在使用:
gem 'rails', '~> 6.0.1'
gem 'mysql2', '>= 0.4.4'
gem 'devise', '~> 4.7.1'
你检查过my_database.schema_migrationstable了吗?您可能会发现 Rails 已经将此迁移标记为已执行。
见https://edgeguides.rubyonrails.org/active_record_migrations.html#old-migrations
用户 table 可能不存在,因为它可能已被手动删除。