【问题标题】:Oracle XE connection configuration for Ruby on RailsRuby on Rails 的 Oracle XE 连接配置
【发布时间】:2014-03-12 10:44:30
【问题描述】:

我是 Ruby on Rails 的新手,目前在配置 config/database.yml 以连接 Oracle XE 11g R2 时遇到问题。我需要你的帮助!

这是我的设置: 虚拟盒子 4.3.6 Ubuntu 64 v12.04.3 $红宝石-v ruby 2.1.0p0(2013-12-25 修订版 44422)[x86_64-linux] $导轨-v 导轨 4.0.2 $宝石-v 2.2.2 $ 宝石安装 ruby​​-oci8 构建原生扩展。这可能需要一段时间... 成功安装ruby-oci8-2.1.7 ruby-oci8-2.1.7 的解析文档 4 秒后完成为 ruby​​-oci8 安装文档 已安装 1 个宝石 # Oracle XE 11gR2 安装在不同的虚拟机中(主机:10.1.1.3) # $ ruby​​ -r oci8 -e 'OCI8.new("ruby/ruby@10.1.1.3").exec("select * from session_privs") do |r|把 r.join(",");结尾' 创建会话 无限表空间 创建表 创建集群 创建序列 创建过程 创建触发器 创建类型 创建运算符 创建索引类型

请注意,我可以使用上面的命令验证连接。但是,我无法使用“rails generate model Post title:string text:text”命令创建新模型 - 我收到一长串错误,抱怨我的“适配器”无效。

问题:

第一季度。我必须在 Gemfile 中放入什么?

第二季度。我是否应该在命令“bundle install”的输出中看到 ruby​​-oci8 gem - 目前我可以看到“使用 sqlite3 (1.3.9) 并且 Gemfile 中还有 2 个条目,如下所示:

# 捆绑边缘 Rails:gem 'rails', github: 'rails/rails' 宝石'导轨','4.0.2' # 使用 sqlite3 作为 Active Record 的数据库 宝石'sqlite3'

第三季度。有没有人成功配置 database.yml 以使用 Oracle XE?请与我分享。

提前感谢您的帮助,
鲁比

【问题讨论】:

    标签: ruby-on-rails oracle


    【解决方案1】:

    安装 ruby​​-oci8 通常比较困难,所以你就快到了。

    Activerecord 需要一个 适配器 来与任何类型的数据库通信;对于 oracle,您将需要 oracle enhanced

    所以把它添加到你的 Gemfile 然后重做捆绑安装:

    gem 'activerecord-oracle_enhanced-adapter'
    

    阅读链接页面以了解特定于 oracle 的怪癖。您的 database.yml 文件应如下所示:

    database:
      adapter: oracle_enhanced
      database: //10.1.1.3:1521/XE
      username: ruby
      password: ruby
    

    数据库连接字符串中的“XE”是 SID。我认为在使用 oracle XE 时,SID 始终是“XE”,但我手头没有,而且自 10g 以来就没有使用过它。

    您不需要将 ruby​​-oci8 添加到 gemfile 中,因为 oracle 适配器将其声明为依赖项,但添加它并没有什么坏处。

    【讨论】:

    • 谢谢蒂姆。这对我行得通。实际上,我已经尝试过 //10.1.1.3:1521/XE 并省略了前导“//”,即 10.1.1.3:1521/XE - 两者都有效。非常感谢!
    猜你喜欢
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 2011-05-10
    • 2015-02-06
    • 2016-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多