mój plik schema.yml wygląda tak:
Kod
propel:
_attributes: { package: lib.model }
users:
_attributes: { phpName: User }
id:
login: varchar(50)
password: varchar(32)
user_type_id: { type: integer, primaryKey: true, required: true, foreignTable: user_types, foreignReference: id, onDelete: cascade }
user_types:
_attributes: { phpName: UserType }
id:
name: varchar(100)
_attributes: { package: lib.model }
users:
_attributes: { phpName: User }
id:
login: varchar(50)
password: varchar(32)
user_type_id: { type: integer, primaryKey: true, required: true, foreignTable: user_types, foreignReference: id, onDelete: cascade }
user_types:
_attributes: { phpName: UserType }
id:
name: varchar(100)
Oczywiście generuje on plik sql o takiej treści (używam sterownika do postgresa: pgsql)
CREATE SEQUENCE "users_seq"; CREATE TABLE "users" ( "id" INTEGER NOT NULL, "login" VARCHAR(50), "password" VARCHAR(32), "user_type_id" INTEGER NOT NULL, PRIMARY KEY ("id","user_type_id") ); COMMENT ON TABLE "users" IS ''; SET search_path TO public; ALTER TABLE "users" ADD CONSTRAINT "users_FK_1" FOREIGN KEY ("user_type_id") REFERENCES "user_types" ("id") ON DELETE CASCADE; CREATE SEQUENCE "user_types_seq"; CREATE TABLE "user_types" ( "id" INTEGER NOT NULL, "name" VARCHAR(100), PRIMARY KEY ("id") ); COMMENT ON TABLE "user_types" IS ''; SET search_path TO public;
gdy chcę załadować plik do bazy danych występuje taki błąd:
Kod
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "users_pkey" for table "users"
ERROR: relation "user_types" does not exist
ERROR: relation "user_types" does not exist
Oczywiście błąd rozumiem, wszystko wróciłoby do normy gdybym deklaracje tych dwóch powyższych tabel zamienił miejscami. Jednak mam pytanie.
Czy istnieje jakiś przełącznik, lub jakiś inny sposób aby plik sql, tworzący schemat bazy danych zawierał na początku pliku deklaracje tabel a na samym końcu wszelkie ADD CONSTRAINT?
Chodzi o to, że stworzyłem dość spory plik schema.yml i nie wiem co zrobić, aby poprawnie załadować plik sql do bazy danych.
(Oczywiście chodzi mi o rozwiązania inne niż zmiana kolejności deklaracji tabel)
Pozdrawiam