2

私は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 => default => spec => db:test:clone_structure) を実行すると、次のようになります。

OCIError: ORA-00904: "FOO"."MY_FUNCTION": 無効な識別子: CREATE TABLE "BAR" (...

db:structure:dump は関数の前にテーブルをエクスポートするので、development_structure.sql では、CREATE TABLE BAR ステートメントの後に CREATE FUNCTION MY_FUNCTION が表示されると思います。

db:structure:dump の仕組みをモンキーパッチする必要がありますか?

ありがとう。

4

1 に答える 1

1

最終的に、github.com/rsim/oracle-enhanced で該当するソース コードを見つけ、config/initializers に突っ込んだファイルの structure_dump および structure_dump_db_stored_code メソッドを上書きしました。

于 2012-12-20T21:01:38.457 に答える