加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:oracle set_sequence_name被忽略

发布时间:2020-12-17 02:42:07 所属栏目:百科 来源:网络整理
导读:我有一个简单的模型,我必须手动设置数据库名称. 此外,由于它使用的是oracle数据库,我正在设置序列名称,因此我可以自动递增id. 当我运行rails控制台并尝试创建我的模型时,它会回来并说无法找到序列.奇怪的部分是它找不到的序列不是我在set_sequence_name中设
我有一个简单的模型,我必须手动设置数据库名称.

此外,由于它使用的是oracle数据库,我正在设置序列名称,因此我可以自动递增id.

当我运行rails控制台并尝试创建我的模型时,它会回来并说无法找到序列.奇怪的部分是它找不到的序列不是我在set_sequence_name中设置的序列.

模型

class Survey < ActiveRecord::Base
  set_sequence_name "SURVEY.SQ_SURVEY_ID"
  set_table_name "SURVEY.SURVEYS"
end

控制台错误

ActiveRecord::StatementInvalid: ActiveRecord::JDBCError: ORA-02289: 
sequence does not exist: select SURVEY.SURVEYS_seq.nextval id from dual

看起来它忽略了我的设置序列名称行.

我只是错过了一些东西吗?

解决方法

FWIW:
使用11g我逃脱了:

self.id = ActiveRecord::Base.connection.execute("select SURVEY.SQ_SURVEY_ID.nextval id from dual").fetch

看来在我的情况下,序列返回一个我需要进行提取的游标.

11g / Rails 3.1

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读