对于我的一个项目,我需要在 Rails 应用程序上使用 Oracle 数据库。
对于我的本地开发,我安装了带有Oracle Developer Day包的Oracle VM VirtualBox。我成功地部署、启动了 VM、登录,甚至在 SQLPlus 上创建了一个具有管理员权限的用户。
在我的 mac OSX Mavericks 上,我安装了 Oracle 的即时客户端以及以下版本的 ruby-oci8 和 activerecord-oracle_enhanced-adapter
gem ruby-oci8', '~> 2.0.6'
gem 'activerecord-oracle_enhanced-adapter', '~> 1.4.1'
我的开发数据库的配置文件是以下 database.yml
development:
adapter: oracle_enhanced
host: 192.168.2.170:1521/myprogram_development
username: my_new_sql_plus_username
password: my_new_sql_plus_password
在 Oracle VM 方面,我已经设置了我的网络,如屏幕截图所示
当我连接我的虚拟机时,我的 IP 与上面的 database.yml 文件相同
一切看起来都很好(我已经按照本教程的每个步骤进行操作,也尝试了这个),但是当我尝试我的rake db:setup
命令或通过 访问数据库时OCI8.new("my_new_sql_plus_username", "my_new_sql_plus_password", "//192.168.2.170:1521:1521/orcl")
,我收到以下错误消息。
rake aborted!
ORA-12170: TNS:Connect timeout occurred
oci8.c:267:in oci8lib_191.bundle
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:326:in `new'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:326:in `new_connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:436:in `initialize'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:24:in `new'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:24:in `initialize'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced_connection.rb:9:in `new'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced_connection.rb:9:in `create'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced_base_ext.rb:13:in `oracle_enhanced_connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `new_connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:325:in `checkout_new_connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:247:in `block (2 levels) in checkout'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `loop'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `block in checkout'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:239:in `checkout'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:102:in `block in connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:101:in `connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_pool.rb:410:in `retrieve_connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_specification.rb:171:in `retrieve_connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/connection_adapters/abstract/connection_specification.rb:145:in `connection'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-oracle_enhanced-adapter-1.4.3/lib/active_record/connection_adapters/oracle_enhanced.rake:26:in `create_database_with_oracle_enhanced'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/railties/databases.rake:62:in `block (3 levels) in <top (required)>'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/railties/databases.rake:62:in `each'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/gems/activerecord-3.2.14/lib/active_record/railties/databases.rake:62:in `block (2 levels) in <top (required)>'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `eval'
/Users/stephanethomas/.rvm/gems/ruby-1.9.3-p448/bin/ruby_noexec_wrapper:14:in `<main>'
Tasks: TOP => db:setup => db:schema:load_if_ruby => db:create
在此先感谢您的帮助