我正在使用 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 (Tasks: TOP => default => spec => db:test:clone_structure) 时,我正在打:
OCIError: ORA-00904: "FOO"."MY_FUNCTION": 无效标识符: CREATE TABLE "BAR" (...
我认为正在发生的事情是 db:structure:dump 在函数之前导出表,因此在 development_structure.sql 中,CREATE FUNCTION MY_FUNCTION 出现在 CREATE TABLE BAR 语句之后。
我必须进去monkeypatch db:structure:dump 是如何工作的吗?
谢谢。