我使用的是Rails 3.2.8并且
config.active_record.schema_format = :sql
在我的config / application.rb。
中在Oracle 11g数据库中,我已经定义了一个具有依赖于用户定义函数的虚拟列的表:
CREATE TABLE BAR (
ID NUMBER(19,0) NOT NULL,
STATUS NUMBER(19, 0) DEFAULT 1,
CALCULATED_STATUS NUMBER(19,0) GENERATED ALWAYS AS (MY_FUNCTION(STATUS)) VIRTUAL)
当Rake执行db:test:clone_structure(任务:TOP =>默认=> spec => db:test:clone_structure)时,我正在点击:
OCIError:ORA-00904:" FOO"。" MY_FUNCTION":无效标识符:CREATE TABLE" BAR" (...
我认为发生的事情是db:structure:dump在函数之前导出表,所以在develop_structure.sql中,CREATE FUNCTION MY_FUNCTION出现在CREATE TABLE BAR语句之后。
我是否必须进入和monkeypatch db:structure:dump如何工作?
感谢。
答案 0 :(得分:1)
我最终在github.com/rsim/oracle-enhanced中找到了适用的源代码,并在我进入配置/初始化器的文件中覆盖了structure_dump和structure_dump_db_stored_code方法。