2015-11-08 3 views
1

Когда я создаю таблицы для моих сущностей, Doctrine не создает auth."user" таблицу без проблем:доктрина создает таблицу, но не опускает его

[[email protected] thiriscart]$ ./bin/console doctrine:schema:update --force --dump-sql 
CREATE SCHEMA auth; 
CREATE SCHEMA catalog; 
CREATE SEQUENCE auth.user_id_seq INCREMENT BY 1 MINVALUE 1 START 1; 
CREATE SEQUENCE catalog.category_id_seq INCREMENT BY 1 MINVALUE 1 START 1; 
CREATE SEQUENCE catalog.product_id_seq INCREMENT BY 1 MINVALUE 1 START 1; 
CREATE TABLE auth."user" (id INT NOT NULL, username VARCHAR(255) NOT NULL, PRIMARY KEY(id)); 
CREATE TABLE catalog.category (id INT NOT NULL, parent_id INT DEFAULT NULL, created_by INT NOT NULL, updated_by INT NOT NULL, title VARCHAR(255) NOT NULL, description TEXT NOT NULL, slug VARCHAR(255) NOT NULL, lft INT NOT NULL, rgt INT NOT NULL, root INT DEFAULT NULL, lvl INT NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id)); 
CREATE INDEX IDX_D3431049727ACA70 ON catalog.category (parent_id); 
CREATE INDEX IDX_D3431049DE12AB56 ON catalog.category (created_by); 
CREATE INDEX IDX_D343104916FE72E1 ON catalog.category (updated_by); 
CREATE TABLE catalog.product (id INT NOT NULL, main_category INT NOT NULL, title VARCHAR(255) NOT NULL, digest TEXT NOT NULL, description TEXT NOT NULL, base_price NUMERIC(10, 2) NOT NULL, PRIMARY KEY(id)); 
CREATE INDEX IDX_BC02688FDF6E08B4 ON catalog.product (main_category); 
ALTER TABLE catalog.category ADD CONSTRAINT FK_D3431049727ACA70 FOREIGN KEY (parent_id) REFERENCES catalog.category (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE; 
ALTER TABLE catalog.category ADD CONSTRAINT FK_D3431049DE12AB56 FOREIGN KEY (created_by) REFERENCES auth."user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE; 
ALTER TABLE catalog.category ADD CONSTRAINT FK_D343104916FE72E1 FOREIGN KEY (updated_by) REFERENCES auth."user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE; 
ALTER TABLE catalog.product ADD CONSTRAINT FK_BC02688FDF6E08B4 FOREIGN KEY (main_category) REFERENCES catalog.category (id) NOT DEFERRABLE INITIALLY IMMEDIATE; 

Updating database schema... 
Database schema updated successfully! "16" queries were executed 

Но не уронить его:

[[email protected] thiriscart]$ ./bin/console doctrine:schema:drop --force --dump-sql 
ALTER TABLE catalog.category DROP CONSTRAINT fk_d3431049727aca70; 
ALTER TABLE catalog.category DROP CONSTRAINT fk_d3431049de12ab56; 
ALTER TABLE catalog.category DROP CONSTRAINT fk_d343104916fe72e1; 
ALTER TABLE catalog.product DROP CONSTRAINT fk_bc02688fdf6e08b4; 
DROP SEQUENCE auth.user_id_seq CASCADE; 
DROP SEQUENCE catalog.category_id_seq CASCADE; 
DROP SEQUENCE catalog.product_id_seq CASCADE; 
DROP SEQUENCE ext_log_entries_id_seq CASCADE; 
DROP SEQUENCE auth.user_id_seq CASCADE; 
DROP SEQUENCE catalog.category_id_seq CASCADE; 
DROP SEQUENCE catalog.product_id_seq CASCADE; 
DROP SEQUENCE ext_translations_id_seq CASCADE; 
DROP SEQUENCE ext_log_entries_id_seq CASCADE; 
DROP TABLE ext_translations; 
DROP TABLE ext_log_entries; 
DROP TABLE catalog.category; 
DROP TABLE catalog.product 

Даже с --full-database вариант генерируется DROP TABLE заявление, но, по-видимому, не выполняется:

[[email protected] thiriscart]$ ./bin/console doctrine:schema:drop --force --full-database --dump-sql 
ALTER TABLE catalog.category DROP CONSTRAINT fk_d3431049727aca70; 
ALTER TABLE catalog.category DROP CONSTRAINT fk_d3431049de12ab56; 
ALTER TABLE catalog.category DROP CONSTRAINT fk_d343104916fe72e1; 
ALTER TABLE catalog.product DROP CONSTRAINT fk_bc02688fdf6e08b4; 
DROP SEQUENCE ext_log_entries_id_seq CASCADE; 
DROP SEQUENCE ext_translations_id_seq CASCADE; 
DROP SEQUENCE auth.user_id_seq CASCADE; 
DROP SEQUENCE catalog.category_id_seq CASCADE; 
DROP SEQUENCE catalog.product_id_seq CASCADE; 
DROP TABLE ext_translations; 
DROP TABLE ext_log_entries; 
DROP TABLE auth."user"; 
DROP TABLE catalog.category; 
DROP TABLE catalog.product 
[[email protected] thiriscart]$ ./bin/console doctrine:schema:update --force --dump-sql 
CREATE TABLE auth."user" (id INT NOT NULL, username VARCHAR(255) NOT NULL, PRIMARY KEY(id)); 
ALTER TABLE catalog.category DROP CONSTRAINT FK_D3431049DE12AB56; 
ALTER TABLE catalog.category DROP CONSTRAINT FK_D343104916FE72E1; 
ALTER TABLE catalog.category ADD CONSTRAINT FK_D3431049DE12AB56 FOREIGN KEY (created_by) REFERENCES auth."user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE; 
ALTER TABLE catalog.category ADD CONSTRAINT FK_D343104916FE72E1 FOREIGN KEY (updated_by) REFERENCES auth."user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE; 

Updating database schema... 



    [Doctrine\DBAL\Exception\TableExistsException] 
    An exception occurred while executing 'CREATE TABLE auth."user" (id INT NOT NULL, username VARCHAR(255) NOT NULL, PRIM 
    ARY KEY(id))': 
    SQLSTATE[42P07]: Duplicate table: 7 ERROR: relation "user" already exists 






    [Doctrine\DBAL\Driver\PDOException] 
    SQLSTATE[42P07]: Duplicate table: 7 ERROR: relation "user" already exists 






    [PDOException] 
    SQLSTATE[42P07]: Duplicate table: 7 ERROR: relation "user" already exists 



doctrine:schema:update [--complete] [--dump-sql] [-f|--force] [--em [EM]] 
+0

ли вы регулярно использовать как --force и --dump-SQL в то же время? Обычно я использую один из других, но не оба. – Cerad

+0

@Cerad Ну, да. Почему нет? У меня для меня другое значение. Дамп означает печать SQL, force означает выполнение SQL по базе данных. Почему бы не сделать это одновременно? :) –

+0

Я думал, что SF/Doctrine выбрасывает исключение, когда вы используете оба. Но мои приложения все еще находятся на 2.3 LTS, поэтому, возможно, это разрешено в более поздних версиях. – lxg

ответ

2

Используйте doctrine:schema:update с параметром --complete, чтобы полностью синхронизировать базу данных с вашими объектами.

app/console doctrine:schema:update --force --complete 

или

app/console doctrine:schema:update --dump-sql --complete 
+0

. К сожалению, это не поможет. –

+0

Вы на 100% уверены? Пожалуйста, * не * используйте '--dump-sql' с' --force'. Используйте именно эту командную строку: 'app/console doctrine: schema: update -force --complete'. – lxg

+0

К сожалению, это не работает. Он пытается создать таблицу пользователей в любом случае ... –

Смежные вопросы