mysql - 如何使用 ruby-mysql 将 Ruby on Rails 连接到 MySQL
问题描述
我收到此错误:
No connection pool with 'primary' found.
raise ConnectionNotEstablished, "No connection pool with '#{spec_name}' found for the '#{ActiveRecord::Base.current_role}' role."
else
raise ConnectionNotEstablished, "No connection pool with '#{spec_name}' found."
end
end
这是我的默认设置:
&default
adapter: ruby-mysql
encoding: utf8mb4
pool: 5
username: root
password:
host: localhost
development:
<<: *default
database: demo_project_development
production:
<<: *default
database: demo_project_production
username: root
password:
)
MySQL 正在运行,我所遵循的教程是使用 mysql2 适配器。
我的 Ruby 版本是 2.6.5。
注意我的数据库中没有表:
activerecord (6.0.1) lib/active_record/connection_adapters/abstract/connection_pool.rb:1117:in `retrieve_connection'
activerecord (6.0.1) lib/active_record/connection_handling.rb:238:in `retrieve_connection'
activerecord (6.0.1) lib/active_record/connection_handling.rb:206:in `connection'
activerecord (6.0.1) lib/active_record/migration.rb:562:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (6.0.1) lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack (6.0.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
web-console (4.0.1) lib/web_console/middleware.rb:132:in `call_app'
web-console (4.0.1) lib/web_console/middleware.rb:28:in `block in call'
web-console (4.0.1) lib/web_console/middleware.rb:17:in `catch'
web-console (4.0.1) lib/web_console/middleware.rb:17:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
railties (6.0.1) lib/rails/rack/logger.rb:38:in `call_app'
railties (6.0.1) lib/rails/rack/logger.rb:26:in `block in call'
activesupport (6.0.1) lib/active_support/tagged_logging.rb:80:in `block in tagged'
activesupport (6.0.1) lib/active_support/tagged_logging.rb:28:in `tagged'
activesupport (6.0.1) lib/active_support/tagged_logging.rb:80:in `tagged'
railties (6.0.1) lib/rails/rack/logger.rb:26:in `call'
sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/request_id.rb:27:in `call'
rack (2.0.7) lib/rack/method_override.rb:22:in `call'
rack (2.0.7) lib/rack/runtime.rb:22:in `call'
activesupport (6.0.1) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/static.rb:126:in `call'
rack (2.0.7) lib/rack/sendfile.rb:111:in `call'
actionpack (6.0.1) lib/action_dispatch/middleware/host_authorization.rb:83:in `call'
webpacker (4.2.0) lib/webpacker/dev_server_proxy.rb:23:in `perform_request'
rack-proxy (0.6.5) lib/rack/proxy.rb:57:in `call'
railties (6.0.1) lib/rails/engine.rb:526:in `call'
puma (4.3.0) lib/puma/configuration.rb:228:in `call'
puma (4.3.0) lib/puma/server.rb:667:in `handle_request'
puma (4.3.0) lib/puma/server.rb:470:in `process_client'
puma (4.3.0) lib/puma/server.rb:328:in `block in run'
puma (4.3.0) lib/puma/thread_pool.rb:134:in `block in spawn_thread'
解决方案
不要使用ruby-mysql
宝石。只需查看github 存储库,您就可以看到最后一次提交是在四年前,几乎所有提交都来自一个作者,此外自述文件是日文的。这不是好兆头。
而是使用积极维护的mysql2 gem 。您可以通过运行以下命令生成已经为 MySQL 设置的 Rails 应用程序:
rails new my_app --database=mysql
或者,如果您想修复现有应用程序,请在 Gemfile 中替换为并设置正确的适配器ruby-mysql
:mysql2
default: &default
adapter: mysql2
# ...
推荐阅读
- gtk3 - Yocto 配置:错误:未满足软件包要求(gtk+-3.0 >= 3.14.0)
- oracle - 如何将 PL/SQL 脚本的结果输出到网格?
- javascript - 返回 JSON 格式的 HTML 并调用函数
- php - MySQL: Acquiring data from related tables
- regex - 正则表达式解析问题
- awk - awk 从具有不同 RS 的文件中查找值
- ruby-on-rails - Ruby-on-Rails 显示问题 - 2018 年 5 月仅存在一次,但我的应用程序显示了 7 次
- android - RecyclerView 中的第一项不可点击
- azure - 本地开发天蓝色函数“HttpRequestMessage”不包含“GetQueryNameValuePairs”的定义
- autodesk-forge - 如何更改查看器的选择颜色?