Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [symfony] propel-build-sql, załadowanie schematu do bazy danych
Cezar708
post
Post #1





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam,

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)

Oczywiście generuje on plik sql o takiej treści (używam sterownika do postgresa: pgsql)
  1. CREATE SEQUENCE "users_seq";
  2. CREATE TABLE "users"
  3. (
  4. "id" INTEGER NOT NULL,
  5. "login" VARCHAR(50),
  6. "password" VARCHAR(32),
  7. "user_type_id" INTEGER NOT NULL,
  8. PRIMARY KEY ("id","user_type_id")
  9. );
  10. COMMENT ON TABLE "users" IS '';
  11.  
  12. SET search_path TO public;
  13. ALTER TABLE "users" ADD CONSTRAINT "users_FK_1" FOREIGN KEY ("user_type_id") REFERENCES "user_types" ("id") ON DELETE CASCADE;
  14.  
  15. CREATE SEQUENCE "user_types_seq";
  16. CREATE TABLE "user_types"
  17. (
  18. "id" INTEGER NOT NULL,
  19. "name" VARCHAR(100),
  20. PRIMARY KEY ("id")
  21. );
  22. COMMENT ON TABLE "user_types" IS '';
  23. 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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(jupeter @ 14.01.2008, 21:26:05 ) *
  • wywalić definiowanie "foreignTable"


No jak to wywalić foreignTable? A jak mam zdeklarować więzły integralności pomiędzy tabelami?

Cytat(jupeter @ 14.01.2008, 21:26:05 ) *
BTW. Wg dobrych praktyk, polecam nazwy encji w liczbie pojedyńczej a nie mnogiej.

Cytat(phpion @ 14.01.2008, 21:46:52 ) *
I tak jak napisał ~jupeter - lepiej nazywaj encje rzeczownikami w liczbie pojedynczej


Chwila? A co tu do gadania ma nazwa encji? Przecież jak widać w przykładzie jest w _attributes phpName i ta phpName jest w liczbie pojedynczej a nie mnogiej tak jak nazwa encji. W moim mniemaniu tabela użytkowników jest zbiorem użytkowników a nie zbiorem użytkownika, więc naturalne dla mnie jest używanie liczby mnogiej dla nazw encji. Inna sprawa oczywiście dotyczy samej klasy modelu, ale to jak już wcześniej wspomniałem określa phpName. Oczywiście jeśli się mylę to mnie poprawcie.

Cytat(phpion @ 14.01.2008, 21:46:52 ) *
Ja bym najpierw zdefiniował tabelę user_type, a dopiero później user - nie wiem dlaczego się przed tym tak wzbraniasz.


Ja się do tego nie wzbraniam. Po prostu piszę nowy system i już napisałem schema.yml. No i w nim mam pogrupowane tabele pod względem przeznaczenia zawartości i wielu innych czynników. Dzięki temu mam porządek w moim schema.yml. Lecz aby zbudować poprawny plik SQL musiałbym cały plik schema.yml przepisać (a dokładniej pozamieniać miejscami deklaracje tabel) czego chcę uniknąć. Stąd ten post.

Poza tym zadałem podobne pytanie na forum symfony. Odpowiedział mi pewien Niemiec, że się tego nie da zrobić, więc chyba pozostanie mi przepisanie pliku schema.yml
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.12.2025 - 09:23