【发布时间】:2017-02-03 19:22:42
【问题描述】:
我正在使用 ActiveRecord 迁移在 Oracle 数据库中创建表和序列,但我不能使用它创建的序列。
这是我尝试过的一个简单迁移:
class CreateFoo < ActiveRecord::Migration
def self.up
create_table "FOO" do |t|
t.string "name", :limit => 50
t.integer "age"
end
end
def self.down
drop_table "FOO"
end
end
但是,当我尝试在该表中插入记录时,它找不到序列。
SQL> insert into foo values(foo_seq.nextval, 'bob', 10);
insert into foo values(foo_seq.nextval, 'bob', 10)
*
ERROR at line 1:
ORA-02289: sequence does not exist
序列确实存在,但名称是大小写混合的。 Oracle 区分大小写吗?
SQL> select sequence_name from user_sequences;
SEQUENCE_NAME
------------------------------
FOO_seq
更改序列名称的大小写以匹配没有帮助。
SQL> insert into foo values(FOO_seq.nextval, 'bob', 10);
insert into foo values(FOO_seq.nextval, 'bob', 10)
*
ERROR at line 1:
ORA-02289: sequence does not exist
如何让 ActiveRecord 重新创建正常序列?这曾经对我有用,但这可能是在旧版本的 ActiveRecord 上。我现在使用的是 activerecord 4.0.13 和 activerecord-oracle_enhanced-adapter 1.5.6。
【问题讨论】:
标签: ruby oracle activerecord