Partage
  • Partager sur Facebook
  • Partager sur Twitter

Migration doctrine Symfony table existe déjà

Sujet résolu
27 septembre 2022 à 15:38:53

Salut à tous,

Je commence à peine un projet Symfony que déjà ça bug o_O.

J'ai créé mes entités avec 

php bin/console doctrine:database:create
php bin/console make:entity

Jusque là tout va bien mais au moment de la migration

php bin/console make:migration
php bin/console doctrine:migrations:migrate

J'ai alors cette erreur qui pop:

[notice] Migrating up to DoctrineMigrations\Version20220927095942
[error] Migration DoctrineMigrations\Version20220927095942 failed during Execution. Error: "An exception occurred while executing a query: SQLSTATE[42S01]: Base table or view already exists: 1050 La table 'category' existe déjà"

In ExceptionConverter.php line 45:

  An exception occurred while executing a query: SQLSTATE[42S01]: Base table or view already exists: 1050 La table 'category' existe déjà  


In Exception.php line 28:

  SQLSTATE[42S01]: Base table or view already exists: 1050 La table 'category' existe déjà  


In Connection.php line 69:

  SQLSTATE[42S01]: Base table or view already exists: 1050 La table 'category' existe déjà


Je ne comprends pas cette erreur car quand je regarde le fichier (et l'unique) de migration il n'y a pas deux créations de table 'category'.

    public function up(Schema $schema): void
    {
        // this up() migration is auto-generated, please modify it to your needs
        $this->addSql('CREATE TABLE category (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, picto VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE comment (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, comment LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_9474526C59D8A214 (recipe_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE favorite (id INT AUTO_INCREMENT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE ingredient (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, name VARCHAR(255) NOT NULL, quantity INT NOT NULL, unit VARCHAR(255) NOT NULL, description VARCHAR(255) DEFAULT NULL, INDEX IDX_6BAF787059D8A214 (recipe_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE portion (id INT AUTO_INCREMENT NOT NULL, quantity INT NOT NULL, unit VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE recipe (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, portion_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', preparation_time TIME DEFAULT NULL, cooking_time TIME NOT NULL, rest_time TIME DEFAULT NULL, difficulty INT NOT NULL, cost INT NOT NULL, INDEX IDX_DA88B137A76ED395 (user_id), UNIQUE INDEX UNIQ_DA88B137162BE352 (portion_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE recipe_category (recipe_id INT NOT NULL, category_id INT NOT NULL, INDEX IDX_70DCBC5F59D8A214 (recipe_id), INDEX IDX_70DCBC5F12469DE2 (category_id), PRIMARY KEY(recipe_id, category_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE recipe_picture (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, name VARCHAR(255) NOT NULL, INDEX IDX_5A3F41C959D8A214 (recipe_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE step (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, description LONGTEXT NOT NULL, INDEX IDX_43B9FE3C59D8A214 (recipe_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE tribe (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, description LONGTEXT DEFAULT NULL, picture VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, nickname VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, picture VARCHAR(255) DEFAULT NULL, first_name VARCHAR(255) DEFAULT NULL, last_name VARCHAR(255) DEFAULT NULL, email VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE user_tribe (user_id INT NOT NULL, tribe_id INT NOT NULL, INDEX IDX_C4914E00A76ED395 (user_id), INDEX IDX_C4914E006F3EE0AD (tribe_id), PRIMARY KEY(user_id, tribe_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE user_favorite (user_id INT NOT NULL, favorite_id INT NOT NULL, INDEX IDX_88486AD9A76ED395 (user_id), INDEX IDX_88486AD9AA17481D (favorite_id), PRIMARY KEY(user_id, favorite_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE messenger_messages (id BIGINT AUTO_INCREMENT NOT NULL, body LONGTEXT NOT NULL, headers LONGTEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at DATETIME NOT NULL, available_at DATETIME NOT NULL, delivered_at DATETIME DEFAULT NULL, INDEX IDX_75EA56E0FB7336F0 (queue_name), INDEX IDX_75EA56E0E3BD61CE (available_at), INDEX IDX_75EA56E016BA31DB (delivered_at), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('ALTER TABLE comment ADD CONSTRAINT FK_9474526C59D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id)');
        $this->addSql('ALTER TABLE ingredient ADD CONSTRAINT FK_6BAF787059D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id)');
        $this->addSql('ALTER TABLE recipe ADD CONSTRAINT FK_DA88B137A76ED395 FOREIGN KEY (user_id) REFERENCES user (id)');
        $this->addSql('ALTER TABLE recipe ADD CONSTRAINT FK_DA88B137162BE352 FOREIGN KEY (portion_id) REFERENCES portion (id)');
        $this->addSql('ALTER TABLE recipe_category ADD CONSTRAINT FK_70DCBC5F59D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE recipe_category ADD CONSTRAINT FK_70DCBC5F12469DE2 FOREIGN KEY (category_id) REFERENCES category (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE recipe_picture ADD CONSTRAINT FK_5A3F41C959D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id)');
        $this->addSql('ALTER TABLE step ADD CONSTRAINT FK_43B9FE3C59D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id)');
        $this->addSql('ALTER TABLE user_tribe ADD CONSTRAINT FK_C4914E00A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE user_tribe ADD CONSTRAINT FK_C4914E006F3EE0AD FOREIGN KEY (tribe_id) REFERENCES tribe (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE user_favorite ADD CONSTRAINT FK_88486AD9A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE user_favorite ADD CONSTRAINT FK_88486AD9AA17481D FOREIGN KEY (favorite_id) REFERENCES favorite (id) ON DELETE CASCADE');
    }




Des idées?



  • Partager sur Facebook
  • Partager sur Twitter
28 septembre 2022 à 6:07:07

Hello,

Chose bête mais es-tu sur la bonne BDD ? Même si ça m'étonnerais puisqu'il génère les bonnes requêtes.

Tu n'as pas une dépendance qui crée une table catégorie quand tu l'installes ?

Tiens sinon une possible solution: https://stackoverflow.com/questions/61262556/symfony-base-table-or-view-already-exists-1050-table-migration-versions-alre

-
Edité par skuti 28 septembre 2022 à 6:11:57

  • Partager sur Facebook
  • Partager sur Twitter
$2b||!$2b
28 septembre 2022 à 7:36:00

Bonjour,

La migration n'étant pas réalisée, as tu regardé si tu n'avais pas :

- déjà une table category dans ta BDD ? ... c'est la première table créée dans le script  ... regarde pendant que tu y es si pas les autres aussi ...

- n'aurais tu pas déjà un script de migration en attente ? voir sous ton chemin de projet le répertoire migrations

Et sinon au grand mot les grands remèdes, tu vides le répertoire migrations, tu t'assures que la BDD est bien vide : aucune table et tu rejoues les scripts de migration.

A+

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 13:37:57

Bonjour,

Merci pour vos réponses. J'en perds mon latin. J'ai paramétré cette BBD:

DATABASE_URL="mysql://root:@127.0.0.1:3306/tribumiam"

Donc je cherche dans ma BDD MySQL et je la trouve mais vide. Pour être sûr j'ai quand même regardé du coté de MariaDB et la je retrouve la BDD mais à moitié pleines. o_O Elle a été créer deux fois? Je n'y comprends rien. 

Bref je fais la technique des grands maux les grands remèdes. Je vide la migration, je vide la BDD de MariaDB et je relance les scripts de migration.

Voilà la nouvelle erreur :

[error] Migration DoctrineMigrations\Version20220929112021 failed during Execution. Error: "An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'portion (id INT AUTO_INCREMENT NOT NULL, quantity INT NOT NULL, unit VARCHAR(255' à la ligne 1"

In ExceptionConverter.php line 86:
                                                                                                                                                                          
  An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'portion (id INT AUTO_INCREMENT NOT    
  NULL, quantity INT NOT NULL, unit VARCHAR(255' à la ligne 1                                                                                                             
                                                                                                                                                                          

In Exception.php line 28:
                                                                                                                                                                          
  SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'portion (id INT AUTO_INCREMENT NOT NULL, quantity INT NOT NULL, unit VARCHAR(255'    
  à la ligne 1                                                                                                                                                            
                                                                                                                                                                          

In Connection.php line 69:
                                                                                                                                                                          
  SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'portion (id INT AUTO_INCREMENT NOT NULL, quantity INT NOT NULL, unit VARCHAR(255'    
  à la ligne 1    

Je me suis dit que c'était peut être un conflit entre les deux BDD du coup j'ai ajouté dans le doctrine.yaml la version du serveur MariaDB vue que c'est vers quoi il pointe apparement:

server_version: 'mariadb-10.4.10'

Aucun changement sur l'erreur... 
J'y comprends plus rien...



-
Edité par Shiyo 29 septembre 2022 à 13:39:39

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 14:22:08

Alors quand cela part ainsi ... on souffle et on se pose.

Donc tu as 2 moteurs de base de données ? mysql et mariadb

J'avoue ne pas  connaître ce cas ... moi tout est en mariadb.

1) je supprimerai (drop) les 2 bases tribumiam dans les 2 moteurs.

2) je recrée la base et je regarde quel moteur à l'instance.

3) pour moi la syntaxe dans le .env est la ligne ci-dessous :

DATABASE_URL="mysql://user_BDD:mdp_user_BDD@127.0.0.1:3306/nom_app?serverVersion=mariadb-10.5.15"

Je n'ai pas de paramètre server_version dans doctrine.yaml.

A+

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 14:28:17

Oui j'ai deux moteurs de BDD j'ai Wamp depuis très longtemps ça doit être surement pour ça. 

Bref tu as raison j'ai fait par étape. Drop les deux bases tribumiam. J'ai également utilisé ta syntaxe pour la version du serveur:

DATABASE_URL="mysql://root:@127.0.0.1:3306/tribumiam?serverVersion=mariadb-10.4.10"



puis j'ai tout relancé

symfony console doctrine:database:create    
Created database `tribumiam` for connection named default

symfony console make:migration
Success! 

symfony console doctrine:migrations:migrate

[notice] Migrating up to DoctrineMigrations\Version20220929122517
[error] Migration DoctrineMigrations\Version20220929122517 failed during Execution. Error: "An exception occurred while executing a query: SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'portion (id INT AUTO_INCREMENT NOT NULL, quantity INT NOT NULL, unit VARCHAR(255' à la ligne 1"

L'erreur persiste :(

-
Edité par Shiyo 29 septembre 2022 à 14:29:18

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 14:36:18

Dans quel moteur de BDD es-tu ? mariadb je suppose ...

Quand tu as fait le make migration qui est en success, es tu sûr qu'il n'y avait pas encore d'anciens scripts dans le répertoire ? 12:25 ... 

A+

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 14:40:31

Oui il ne génère plus que dans MariaDB maintenant je ne sais pas d'où sortais la base dans MySQL.

Non j'avais supprimé tous les scripts dans le dossier migrations avant.

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 14:48:16

Je récapitule :

Tu es dans MariaDB.

Ta base doit être complètement vide sans aucune table.

Tu n'as pas de script de migration dans le répertoire migrations de ton projet antérieure à la commande make:migration indiquée ci-dessus ... curieux quand même que le script qui ne fonctionne pas soit de 12h25 alors que tes manips doivent être postérieures ... ou alors tu n'es pas en France.

==> tu confirmes ?

Si oui, tu peux montrer le script de migration qui provoque l'erreur ?

A+

-
Edité par monkey3d 29 septembre 2022 à 14:51:39

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 15:02:30

Je confirme. Je ne comprends pas non plus le 12h25. Je suis en France. J'ai refais la manif une ènieme fois pour vérifier et là ça me met 12h59 o_O.

Voilà le dernier script qui génère toujours la même erreur:

<?php

declare(strict_types=1);

namespace DoctrineMigrations;

use Doctrine\DBAL\Schema\Schema;
use Doctrine\Migrations\AbstractMigration;

/**
 * Auto-generated Migration: Please modify to your needs!
 */
final class Version20220929125904 extends AbstractMigration
{
    public function getDescription(): string
    {
        return '';
    }

    public function up(Schema $schema): void
    {
        // this up() migration is auto-generated, please modify it to your needs
        $this->addSql('CREATE TABLE category (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, picto VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE comment (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, comment LONGTEXT NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_9474526C59D8A214 (recipe_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE favorite (id INT AUTO_INCREMENT NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE ingredient (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, name VARCHAR(255) NOT NULL, quantity INT NOT NULL, unit VARCHAR(255) NOT NULL, description VARCHAR(255) DEFAULT NULL, INDEX IDX_6BAF787059D8A214 (recipe_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE portion (id INT AUTO_INCREMENT NOT NULL, quantity INT NOT NULL, unit VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE recipe (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, portion_id INT DEFAULT NULL, name VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', preparation_time TIME DEFAULT NULL, cooking_time TIME NOT NULL, rest_time TIME DEFAULT NULL, difficulty INT NOT NULL, cost INT NOT NULL, INDEX IDX_DA88B137A76ED395 (user_id), UNIQUE INDEX UNIQ_DA88B137162BE352 (portion_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE recipe_category (recipe_id INT NOT NULL, category_id INT NOT NULL, INDEX IDX_70DCBC5F59D8A214 (recipe_id), INDEX IDX_70DCBC5F12469DE2 (category_id), PRIMARY KEY(recipe_id, category_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE recipe_picture (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, name VARCHAR(255) NOT NULL, INDEX IDX_5A3F41C959D8A214 (recipe_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE step (id INT AUTO_INCREMENT NOT NULL, recipe_id INT NOT NULL, description LONGTEXT NOT NULL, INDEX IDX_43B9FE3C59D8A214 (recipe_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE tribe (id INT AUTO_INCREMENT NOT NULL, name VARCHAR(255) NOT NULL, description LONGTEXT DEFAULT NULL, picture VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE user (id INT AUTO_INCREMENT NOT NULL, nickname VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, picture VARCHAR(255) DEFAULT NULL, first_name VARCHAR(255) DEFAULT NULL, last_name VARCHAR(255) DEFAULT NULL, email VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE user_tribe (user_id INT NOT NULL, tribe_id INT NOT NULL, INDEX IDX_C4914E00A76ED395 (user_id), INDEX IDX_C4914E006F3EE0AD (tribe_id), PRIMARY KEY(user_id, tribe_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE user_favorite (user_id INT NOT NULL, favorite_id INT NOT NULL, INDEX IDX_88486AD9A76ED395 (user_id), INDEX IDX_88486AD9AA17481D (favorite_id), PRIMARY KEY(user_id, favorite_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('CREATE TABLE messenger_messages (id BIGINT AUTO_INCREMENT NOT NULL, body LONGTEXT NOT NULL, headers LONGTEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at DATETIME NOT NULL, available_at DATETIME NOT NULL, delivered_at DATETIME DEFAULT NULL, INDEX IDX_75EA56E0FB7336F0 (queue_name), INDEX IDX_75EA56E0E3BD61CE (available_at), INDEX IDX_75EA56E016BA31DB (delivered_at), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
        $this->addSql('ALTER TABLE comment ADD CONSTRAINT FK_9474526C59D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id)');
        $this->addSql('ALTER TABLE ingredient ADD CONSTRAINT FK_6BAF787059D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id)');
        $this->addSql('ALTER TABLE recipe ADD CONSTRAINT FK_DA88B137A76ED395 FOREIGN KEY (user_id) REFERENCES user (id)');
        $this->addSql('ALTER TABLE recipe ADD CONSTRAINT FK_DA88B137162BE352 FOREIGN KEY (portion_id) REFERENCES portion (id)');
        $this->addSql('ALTER TABLE recipe_category ADD CONSTRAINT FK_70DCBC5F59D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE recipe_category ADD CONSTRAINT FK_70DCBC5F12469DE2 FOREIGN KEY (category_id) REFERENCES category (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE recipe_picture ADD CONSTRAINT FK_5A3F41C959D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id)');
        $this->addSql('ALTER TABLE step ADD CONSTRAINT FK_43B9FE3C59D8A214 FOREIGN KEY (recipe_id) REFERENCES recipe (id)');
        $this->addSql('ALTER TABLE user_tribe ADD CONSTRAINT FK_C4914E00A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE user_tribe ADD CONSTRAINT FK_C4914E006F3EE0AD FOREIGN KEY (tribe_id) REFERENCES tribe (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE user_favorite ADD CONSTRAINT FK_88486AD9A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
        $this->addSql('ALTER TABLE user_favorite ADD CONSTRAINT FK_88486AD9AA17481D FOREIGN KEY (favorite_id) REFERENCES favorite (id) ON DELETE CASCADE');
    }

    public function down(Schema $schema): void
    {
        // this down() migration is auto-generated, please modify it to your needs
        $this->addSql('ALTER TABLE comment DROP FOREIGN KEY FK_9474526C59D8A214');
        $this->addSql('ALTER TABLE ingredient DROP FOREIGN KEY FK_6BAF787059D8A214');
        $this->addSql('ALTER TABLE recipe DROP FOREIGN KEY FK_DA88B137A76ED395');
        $this->addSql('ALTER TABLE recipe DROP FOREIGN KEY FK_DA88B137162BE352');
        $this->addSql('ALTER TABLE recipe_category DROP FOREIGN KEY FK_70DCBC5F59D8A214');
        $this->addSql('ALTER TABLE recipe_category DROP FOREIGN KEY FK_70DCBC5F12469DE2');
        $this->addSql('ALTER TABLE recipe_picture DROP FOREIGN KEY FK_5A3F41C959D8A214');
        $this->addSql('ALTER TABLE step DROP FOREIGN KEY FK_43B9FE3C59D8A214');
        $this->addSql('ALTER TABLE user_tribe DROP FOREIGN KEY FK_C4914E00A76ED395');
        $this->addSql('ALTER TABLE user_tribe DROP FOREIGN KEY FK_C4914E006F3EE0AD');
        $this->addSql('ALTER TABLE user_favorite DROP FOREIGN KEY FK_88486AD9A76ED395');
        $this->addSql('ALTER TABLE user_favorite DROP FOREIGN KEY FK_88486AD9AA17481D');
        $this->addSql('DROP TABLE category');
        $this->addSql('DROP TABLE comment');
        $this->addSql('DROP TABLE favorite');
        $this->addSql('DROP TABLE ingredient');
        $this->addSql('DROP TABLE portion');
        $this->addSql('DROP TABLE recipe');
        $this->addSql('DROP TABLE recipe_category');
        $this->addSql('DROP TABLE recipe_picture');
        $this->addSql('DROP TABLE step');
        $this->addSql('DROP TABLE tribe');
        $this->addSql('DROP TABLE user');
        $this->addSql('DROP TABLE user_tribe');
        $this->addSql('DROP TABLE user_favorite');
        $this->addSql('DROP TABLE messenger_messages');
    }
}



  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 15:26:19

Pour l'heure tu dois avoir un mauvais réglage du fuseau horaire de php par exemple. Passons ...

Oui je sais que tu es en France, je me suis permis de consulter ton profil.

Donc ce serait la ligne :

$this->addSql('CREATE TABLE portion (id INT AUTO_INCREMENT NOT NULL, quantity INT NOT NULL, unit VARCHAR(255) NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');

qui pose problème mais je ne vois aucune erreur.o_O

Tu peux essayer les commandes de migrations qui peut-être vont te donner un état de ce qui ne va pas ... https://symfony.com/bundles/DoctrineMigrationsBundle/current/index.html

J'ai déjà eu des problèmes de synchro entre l'orm et la base mais le fait de repartir from scratch résout. Là, j'avoue je sèche. :(

A+

-
Edité par monkey3d 29 septembre 2022 à 15:28:05

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 15:39:57

Merci quand même pour ton aide et surtout pour ton temps.
Je vais essayer quand je peut de refaire le projet à zéro j'ai dû merder quelque part durant la création des entités j'imagine.
Je te tiens au courant si je trouve une explication à ce mystère.

-
Edité par Shiyo 29 septembre 2022 à 15:40:23

  • Partager sur Facebook
  • Partager sur Twitter
29 septembre 2022 à 15:47:56

Il y a d'autres commandes qui peuvent être testées : par exemple diff qui permet, parfois, de resynchroniser.

Oui cela m'intéresse de savoir d'où vient le problème et sa résolution.

Pour les entités regarde effectivement si ton entité portion n'a pas un hic mais j'y crois peu car le make:migration l'aurait signalé.

J'ai cherché aussi si tu n'avais pas pris un mot réservé mysql pour les propriétés mais à priori, non !

Désolé de n'avoir pu résoudre en totalité même si nous avons avancé sur le problème du début avec la double base.

A+

-
Edité par monkey3d 29 septembre 2022 à 15:49:12

  • Partager sur Facebook
  • Partager sur Twitter
30 septembre 2022 à 4:30:43

Hello,

Est-ce qu'il est possible pour toi de configurer Mariadb sur un autre port ?

Ou éteindre juste MySQL ?

Parce que Mariadb étant un fork de MySQL, ils utilisent le même DSN de connexion mis à part ce que tu as mentionnée sur la version.

Je sais pas si en interne le driver utilisé ne fait pas deux pool de connexion avec les deux BDD en même temps (c'est une vraie question dont je n'ai pas encore la réponse).

  • Partager sur Facebook
  • Partager sur Twitter
$2b||!$2b
30 septembre 2022 à 10:45:02

Salut

Est-ce que par hasard on n'aurait pas un caractère trompeur, genre espace insécable, ou un caractère invisible dans la requête ? Entre CREATE TABLE et portion, notamment.

-
Edité par Ymox 30 septembre 2022 à 10:45:21

  • Partager sur Facebook
  • Partager sur Twitter
3 octobre 2022 à 9:24:14

Update:

Je viens de refaire depuis zéro le projet en rentrant de nouveau toutes les entités avec 

php bin/console make:entity 

Tout se passe super bien et au final au moment de la migration j'ai exactement la même erreur...

Bon avant de me pendre je vais chercher pourquoi ce fameux Portion le gène tant.


Ymox a écrit:

Salut

Est-ce que par hasard on n'aurait pas un caractère trompeur, genre espace insécable, ou un caractère invisible dans la requête ? Entre CREATE TABLE et portion, notamment.

-
Edité par Ymox 30 septembre 2022 à 10:45:21

Je ne pense pas, j'ai beau regardé je n'en vois pas. Ca serais étonnant vue que c'est du code générer par Symfony mais même en regardant le code je ne voit rien de particulier.


skuti a écrit:

Hello,

Est-ce qu'il est possible pour toi de configurer Mariadb sur un autre port ?

Ou éteindre juste MySQL ?

Parce que Mariadb étant un fork de MySQL, ils utilisent le même DSN de connexion mis à part ce que tu as mentionnée sur la version.

Je sais pas si en interne le driver utilisé ne fait pas deux pool de connexion avec les deux BDD en même temps (c'est une vraie question dont je n'ai pas encore la réponse).

Salut Skuti,
C'est une très bonne idée. Je viens d'éteindre MySQL pour le test mais l'erreur reste la même:

monkey3d a écrit:

Il y a d'autres commandes qui peuvent être testées : par exemple diff qui permet, parfois, de resynchroniser.

-
Edité par monkey3d 29 septembre 2022 à 15:49:12

Salut,

J'ai testé dans le doute cette commande mais le résultat n'est pas concluant.



-
Edité par Shiyo 3 octobre 2022 à 10:31:04

  • Partager sur Facebook
  • Partager sur Twitter
3 octobre 2022 à 12:45:33

Si tu executes la query qui bloque directement dans ta BDD elle passe ?

J'ai pensé à un mot réservé mais ça ne semble pas être le cas.

-
Edité par skuti 3 octobre 2022 à 12:45:59

  • Partager sur Facebook
  • Partager sur Twitter
$2b||!$2b
3 octobre 2022 à 12:54:13

skuti a écrit:

Si tu executes la query qui bloque directement dans ta BDD elle passe ?

J'ai pensé à un mot réservé mais ça ne semble pas être le cas.

-
Edité par skuti il y a 4 minutes


Je n'avais pas testé en effet. L'erreur renvoyé est la même.

Apparemment c'est le terme "portion" qui le dérange. Je viens de changer par "partion" juste pour tester et la query est passée !

En effet après avoir changer "portion" par "part" partout dans mon code et avoir relancé les migrations ça a enfin fonctionné! Par contre si quelqu'un a l'explication je suis preneuse car j'ai beau chercher je ne trouve pas "portion" dans la liste des mots réservés. Une idée?

En tout cas merci à tous pour votre aide et vos idées!

-
Edité par Shiyo 3 octobre 2022 à 13:18:28

  • Partager sur Facebook
  • Partager sur Twitter
3 octobre 2022 à 15:23:42

Alors c'est ce que je disais dans mon précédent commentaire sauf que j'avais regardé si "unit" était un mot réservé mais j'ai pas regarder pour le nom de la table. Mais c'est normal, certains mots dans chacun des types de BDD sont des mots réservés car le moteur va les interpréter comme fonction/attributs/etc de BDD.

Après tu peux échapper en mettant `portion` il me semble. Mais c'est mieux de changer l'attribut pour éviter des oublies ou autre.

  • Partager sur Facebook
  • Partager sur Twitter
$2b||!$2b
4 octobre 2022 à 5:53:17

Alors j'avais bien pensé à un mot réservé - cf mon post du 29/09 à 15:47 - mais je n'avais pas trouvé portion comme mot réservé en cherchant !

Voilà un pb résolu mais qui a fait couler de l'encre.

Bonne suite. Bye

  • Partager sur Facebook
  • Partager sur Twitter
21 juillet 2023 à 14:37:04

c'est exactement mon cas je sais pas quoi faire depuis. j'ai cru croire trouver la solution comment cela a été résolu malheureusement on fait que étaler le problème, Kolwezi-RDC
  • Partager sur Facebook
  • Partager sur Twitter
25 juillet 2023 à 5:47:45

MoïseKakudjiProsper a écrit:

c'est exactement mon cas je sais pas quoi faire depuis. j'ai cru croire trouver la solution comment cela a été résolu malheureusement on fait que étaler le problème, Kolwezi-RDC


Tu devrais ouvrir un nouveau poste
  • Partager sur Facebook
  • Partager sur Twitter
$2b||!$2b
25 juillet 2023 à 5:55:45

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ici.

  • Partager sur Facebook
  • Partager sur Twitter