Tag: oracle

使用Oracle和Rails的问题

所以,按照各种教程,我在我的Windows框中安装了以下gem: “activerecord-oracle_enhanced-adapter” 和 “ruby-oci8” 以及修改我的database.yml看起来像: oracle_development: adapter: oracle_enhanced database: 127.0.0.0:1521/sid username: uid password: pid Ruby OCI8无法编译(教程:[the rails wiki] [1]暗示可能就是这种情况,建议使用1.0.4版本)。 所以,1.0.4编译和安装就好了,但是一旦我拥有它(并将一个oci.dll加载到Ruby中),我从Rails控制台运行一个快速测试,看看: Loading development environment (Rails 2.3.5) OracleConnector.test RuntimeError:请安装oracle_enhanced适配器: gem install activerec ord-oracle_enhanced-adapter (错误:ruby-oci8版本1.0.7太旧。请安装ruby-oci8版本2.0.3或更高版本。) 我不确定该怎么做。 首先,我肯定有“activerecord-oracle_enhanced-adapter”,我不确定为什么它认为其他明智的。 对于两个,我不知道如何获得更新的OCI8 …当我尝试时,我看到: C:\Documents and Settings\jschultz\workspace\OracleTest>gem install ruby-oci8 Building native extensions. This could take a while… ERROR: Error installing ruby-oci8: ERROR: Failed […]

Rails模型与外键本身

我有一个Oracle DB模式,其中包含一个“用户”表。 此表有两个非空外键给编辑器和创建者,它们也是用户。 架构转储如下所示: create_table “users”, :force => true do |t| t.integer “creator_id”, :precision => 38, :scale => 0, :null => false t.integer “editor_id”, :precision => 38, :scale => 0, :null => false end add_foreign_key “users”, “users”, :column => “creator_id”, :name => “r_user_creatorid”, :dependent => :nullify add_foreign_key “users”, “users”, :column => “editor_id”, :name => “r_user_editorid”, […]

尝试从OS X上的Rails连接到Oracle时出错

我完成了这里描述的所有步骤来设置我的OS X机器,以允许我从Rails应用程序连接到Oracle。 在我的应用程序中设置database.yml文件: development: adapter: oracle_enhanced host: [SERVER IP ADDRESS] database: [ORACLE INSTANCE SID] username: xxx password: yyy encoding: utf8 也尝试使用域名。 在Rails控制台中试过…… >> con = ActiveRecord::Base.connection 但它挂了很长时间然后错误超时…… OCIError: ORA-12170: TNS:Connect timeout occurred from env.c:257:in oci8lib.so from /usr/local/lib/ruby/site_ruby/1.8/oci8.rb:229:in `initialize’ from /usr/local/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.2.0/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:184:in `new’ from /usr/local/lib/ruby/gems/1.8/gems/activerecord-oracle_enhanced-adapter-1.2.0/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb:184:in `new_connection’ […] 有没有人在OS X上工作并知道如何解决这个问题?

Rails:Oracle约束违规

我在inheritance的Rails站点上进行维护工作; 它由Oracle数据库驱动,我可以访问该站点的开发和生产安装(每个都有自己的Oracle DB)。 我在尝试在生产站点上插入数据时遇到了Oracle错误,但是在开发站点上没有: ActiveRecord::StatementInvalid (OCIError: ORA-00001: unique constraint (DATABASE_NAME.PK_REGISTRATION_OWNERSHIP) violated: INSERT INTO registration_ownerships (updated_at, company_ownership_id, created_by, updated_by, registration_id, created_at) VALUES (‘2006-05-04 16:30:47’, 3, NULL, NULL, 2920, ‘2006-05-04 16:30:47′)): /usr/local/lib/ruby/gems/1.8/gems/activerecord-oracle-adapter-1.0.0.9250/lib/active_record/connection_adapters/oracle_adapter.rb:221:in `execute’ app/controllers/vendors_controller.rb:94:in `create’ 据我所知(我使用Navicat作为Oracle客户端),开发站点的数据库架构与实际站点的数据库架构相同。 我不是Oracle专家; 任何人都可以阐明为什么我会在一次安装而不是另一次安装中得到错误? 顺便提一下,dev和production registration_ownerships表都填充了大量数据,包括country_ownership_id的重复条目(由索引PK_REGISTRATION_OWNERSHIP驱动)。 如果您需要更多信息进行故障排除,请与我们联系。 对不起,我还没有给出更多,但我不确定哪些细节会有所帮助。 更新 :我已经尝试在生产服务器上删除约束但它没有效果; 我也不想放弃索引,因为我不确定后果可能是什么,我不想让生产比现在更不稳定。 奇怪的是,我尝试手动执行抛出错误的SQL,并且Oracle接受了insert语句(尽管我必须使用字符串文字将日期包含在to_date()调用中以绕过“ORA-01861:文字不匹配”格式字符串“错误”。 这可能会发生什么?

Rails建模:将HABTM转换为has_many:through

我正在现有的Rails站点上进行维护工作,并且遇到了来自多对多关联的一些问题。 看起来该站点最初是使用has_and_belongs_to_many为几个关系构建的,这些关系后来在业务逻辑中变得更加复杂,所以我需要使用has_many :through来支持关系表中的其他字段。 但是,最初用于HABTM的连接表没有主键,我必须添加一个以支持使用has_many :through单独的关系建模。 将主键添加到包含大量数据的现有表的最佳方法是什么? 还有另一种方法可以做我想做的事吗? 顺便提一下,系统在Oracle上运行。 谢谢! 贾斯汀 更新11/9/09 3:58 pm:我不是Oracle的专家,并且在Oracle的非空,自动增量等版本中迷失了方向。 最初我尝试通过添加新字段作为主键来执行Mike和Corey所建议的操作,但Oracle不允许我将非空字段添加到非空表(ORA-01758)。 然后我将数据导出为SQL,删除行,添加PK并将其设置为非null,然后尝试导入数据,但我不断收到“无法将NULL插入id …”的错误。 (ORA-01400)。 最后,我尝试使用迁移,正如Corey在他的评论中所建议的那样,但是当我手动更改数据库时,rake遇到了Oracle抛出的相同错误(“无法将非空字段添加到非空表”)。 我清理了表,运行了迁移(工作),然后尝试重新导入数据,但是上次我尝试导入时遇到了相同的错误(“无法将NULL插入id …”)。 如何保存数据并添加我需要的主键? 我知道有可能写一个rake任务,但我不确定如何继续前进。 有任何想法吗?

Rails 3.0.3 – Oracle_enhanced不起作用

我一直在使用带有oracle_enhanced的Ruby 1.8 + Rails 2.3.5,它运行正常。 现在我最近在另一个文件夹上安装了Ruby 1.9.2和Rails 3.0.3,我无法让它工作。 当我创建一个简单的应用程序并访问它时,该页面返回以下错误: 请安装oracle_enhanced适配器: gem install activerecord-oracle_enhanced-adapter (没有要加载的文件 – active_record / connection_adapters / oracle_enhanced_adapter) 我试图调查问题,发现Ruby正在使用的文件夹,即C:\ Ruby192 \ lib \ ruby​​ \ gems \ 1.9.1 \ gems \ activerecord-3.0.3 \ lib \ active_record \ connection_adapters。 在该文件夹中没有oracle_enhanced_adapter.br文件。 该文件位于另一个文件夹C:\ Ruby192 \ lib \ ruby​​ \ gems \ 1.9.1 \ gems \ activerecord-oracle_enhanced-adapter-1.3.1 […]

如何在Rails中使用GROUP_CONCAT?

我有以下查询,我想与ActiveRecord一起使用,以便它可以在生产服务器上的基于ORACLE的本机查询中进行翻译。 现在我正在使用SQLITe。 select c.name,co.code,GROUP_CONCAT(c.name) AS GroupedName from countries c INNER JOIN continents co on c.continent_code = co.code INNER JOIN event_locations el on el.location_id = c.id group by co.code

错误:不兼容的字符编码:UTF-8和ASCII-8BIT

我得到了错误incompatible character encodings: UTF-8 and ASCII-8BIT ,当在数据库中找到一些字符时,如:ñ,á,é等。 我的环境是: Rails:3.2.5 Ruby:1.9.4p194 数据库:Oracle 10g(10.2.0.1.0) 我可以使用Toad将这些字符保存在数据库中。 我试图在我的观点的第一行写这个: 在enviroment.erb Encoding.default_external = Encoding::UTF_8 Encoding.default_internal = Encoding::UTF_8 但没有解决这个问题。 请,有人可以给一些建议来解决这个问题。 谢谢。

如何在Ruby中运行Oracle存储过程

我获得了对Oracle数据库的读访问权,以获取我自己的数据库的数据。 DBA给了我一个存储过程,他向我保证是我所需要的,但我还是无法从Ruby运行它。 我安装了ruby-oci8 gem和oracle即时客户端。 这是我到目前为止所管理的内容。 require ‘oci8’ conn = OCI8.new(‘user’,’pass’,’//remoteora1:1521/xxxx’) => # cursor = conn.parse(“call REPOSITORY.GET_PMI_ADT( ‘722833’, ‘W’, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, […]

在多少种语言中Null不等于甚至没有Null的东西?

在多少种语言中Null不等于甚至没有Null的东西?