Je??eli przy pr??bie wywo??ania polecenia:
$symfony doctrine:insert-sql
Wyskakuje Ci b??Ä?d
SQLSTATE[HY000]: General error: 1005 Can't create table 'TwojaBazaDanych.#sql-6c_2d' (errno: 121)
To znaczy ??e mysql nie mo??e utworzyÄ? relacji miÄ?dzy obiektami, z trywialnego powodu pole klucza obcego jest r????nego typu od pola powiÄ?zanego w lokalnej tabeli.
Np:
INT => BIGINT
Doctrine jako domy??lny typ na Primiary Key wybiera integer(8) czyli BIGINT. Zatem je??li zdefiniowa??e?? klucz obcy w schemacie obiektu o innej wielko??ci Integera To nie zadzia??a.
schema.yml | typ w MySQl | typ w PostgreSQL |
integer | integer | int/serial |
integer(1) | tinyint | smallint/serial |
integer(2) | smallint | smallint/serial |
integer(3) | mediumint | int/serial |
integer(4) | int | int/serial |
integer(5) | bigint | bigint/bigserial |
Je??eli po poprawkach schematu (config/doctrine/schema.yml) i przeprowadzeniu operacji:
$symfony doctrine:build --model $symfony doctrine:build --sql $symfony doctrine:insert-sql
Jeste?? pewien ??e b??Ä?d??w ju?? nie ma w schemacie a w phpMyAdminie pola nie sÄ? identyczne. To polecam:
DROP DATABASE TwojaBazaDanych; CREATE DATABASE TwojaBazaDanych;
Zmieni??Ä?m w schema.sql wszystkie typy na BIGINT. po wykonaniu polecen inser-sql dalej zwraca te nsam b??Ä?d. Jaka mo??e byÄ? jeszcze przyczyna ?
Zobacz co masz w bazie danych albu w schema.sql zwr??Ä? uwagÄ? na zgodno??Ä? typ??w p??l w relacji.