首页 > 解决方案 > Oracle on Rails [Windows 10]

问题描述

我在使用 Rails 连接到 oracle 数据库时遇到问题。我配置了 oracle 即时客户端,一切正常,但是当我启动 rails 应用程序时,它显示以下错误

RuntimeError 找不到要挂接的 DLL。

信息:

-ruby 2.6.3p62(2019-04-16 修订版 67580)[x64-mingw32]

-Rails 5.2.6

-ruby-oci8 (2.2.9-x64-mingw32)

RuntimeError (No DLL is found to hook.):

ruby-oci8-2.2.9-x64 (mingw32) lib/oci8/properties.rb:74:in `__set_prop'
ruby-oci8-2.2.9-x64 (mingw32) lib/oci8/properties.rb:74:in `[]='
activerecord-oracle_enhanced-adapter (5.2.8) lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:322:in `new_connection'
activerecord-oracle_enhanced-adapter (5.2.8) lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:386:in `initialize'
activerecord-oracle_enhanced-adapter (5.2.8) lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:31:in `new'
activerecord-oracle_enhanced-adapter (5.2.8) lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:31:in `initialize'
activerecord-oracle_enhanced-adapter (5.2.8) lib/active_record/connection_adapters/oracle_enhanced/connection.rb:11:in `new'
activerecord-oracle_enhanced-adapter (5.2.8) lib/active_record/connection_adapters/oracle_enhanced/connection.rb:11:in `create'
activerecord-oracle_enhanced-adapter (5.2.8) lib/active_record/connection_adapters/oracle_enhanced_adapter.rb:74:in `oracle_enhanced_connection'
activerecord (5.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:830:in `new_connection'
activerecord (5.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:874:in `checkout_new_connection'
activerecord (5.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in `try_to_checkout_new_connection'
activerecord (5.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:814:in `acquire_connection'
activerecord (5.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:538:in `checkout'
activerecord (5.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection'
activerecord (5.2.6) lib/active_record/connection_adapters/abstract/connection_pool.rb:1033:in `retrieve_connection'
activerecord (5.2.6) lib/active_record/connection_handling.rb:118:in `retrieve_connection'
activerecord (5.2.6) lib/active_record/connection_handling.rb:90:in `connection'
activerecord (5.2.6) lib/active_record/migration.rb:554:in `call'
actionpack (5.2.6) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
activesupport (5.2.6) lib/active_support/callbacks.rb:98:in `run_callbacks'
actionpack (5.2.6) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (5.2.6) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (5.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call'
web-console (3.7.0) lib/web_console/middleware.rb:135:in `call_app'
web-console (3.7.0) lib/web_console/middleware.rb:30:in `block in call'
web-console (3.7.0) lib/web_console/middleware.rb:20:in `catch'
web-console (3.7.0) lib/web_console/middleware.rb:20:in `call'
actionpack (5.2.6) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
railties (5.2.6) lib/rails/rack/logger.rb:38:in `call_app'
railties (5.2.6) lib/rails/rack/logger.rb:26:in `block in call'
activesupport (5.2.6) lib/active_support/tagged_logging.rb:71:in `block in tagged'
activesupport (5.2.6) lib/active_support/tagged_logging.rb:28:in `tagged'
activesupport (5.2.6) lib/active_support/tagged_logging.rb:71:in `tagged'
railties (5.2.6) lib/rails/rack/logger.rb:26:in `call'
sprockets-rails (3.2.2) lib/sprockets/rails/quiet_assets.rb:13:in `call'
actionpack (5.2.6) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack (5.2.6) lib/action_dispatch/middleware/request_id.rb:27:in `call'
rack (2.2.3) lib/rack/method_override.rb:24:in `call'
rack (2.2.3) lib/rack/runtime.rb:22:in `call'
activesupport (5.2.6) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (5.2.6) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (5.2.6) lib/action_dispatch/middleware/static.rb:127:in `call'
rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
railties (5.2.6) lib/rails/engine.rb:524:in `call'
puma (3.12.6) lib/puma/configuration.rb:227:in `call'
puma (3.12.6) lib/puma/server.rb:706:in `handle_request'
puma (3.12.6) lib/puma/server.rb:476:in `process_client'
puma (3.12.6) lib/puma/server.rb:334:in `block in run'
puma (3.12.6) lib/puma/thread_pool.rb:135:in `block in spawn_thread'

我的 database.yml 配置(隐藏端口、ip 等信息):

default: &default
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  timeout: 5000

    development:
      <<: *default
      adapter: oracle_enhanced
      database: SID
      username: USER
      password: PASSWORD
      host: IP
      port: PORT

标签: ruby-on-railsrubywindowsoracle

解决方案


推荐阅读