2

J'utilise des tâches de gulp pour la migration de la base de données. À des fins de test, j'utilise une base de données différente. donc j'ai besoin exactement de la même base de données. J'essaie de faire avec sequelize.sync ({force: true}) mais ça ne marche pas.sequelize.sync ({force: true}) ne fonctionne pas plusieurs fois

J'ai tous mes modèles dans portal-model. voici le code:

const models = require('portal-models'); 
gulp.task('migrate', ['create-database'], (done) => { 
    models.sequelize.query('SET FOREIGN_KEY_CHECKS = 0') 
    .then(() => models.sequelize.sync({ force: true, alter: true })) 
.... 
.... 
.... 
) 

Avec Force: vrai, il devrait fonctionner, mais pour moi, je reçois l'erreur comme mydatbaseName.tablename est existe pas.

J'ai créé une nouvelle base de données de test. Je ne veux pas créer manuellement tout dans testdatabase, donc j'utilise les migrations mais i Gusse Sync ne fonctionne pas correctement.

Quelqu'un peut-il dire exactement ce que je devrais suivre?

Merci à l'avance.

+0

Utilisez-vous cli-sequelize pour les migrations? – Shivam

+0

@Shivam: Non, je n'utilise pas sequelize-cli. J'utilise "sequelize": "^ 3.24.3". –

+0

Si manuellement j'ai créé des tables, alors il travaille pour les requêtes d'insertion. mais je ne veux pas créer des tables manuellement. Force: true doit mapper le schéma. –

Répondre

1

Enfin, j'ai trouvé l'erreur. models.sequelize.sync({ force: true }) cela fonctionnait correctement, mais je n'ai pas pu voir les journaux sur l'invite de commande, donc je pensais que la synchronisation ne fonctionne pas correctement. J'ai ajouté models.sequelize.sync({ force: true, logging: console.log })) Avec ceci j'ai pu voir le journal, il laissait tomber toutes les tables et créer de nouveau. Le problème n'était pas avec sequelize.sync(). Le problème était avec mon nom de base de données, il ne faisait référence qu'à la base de données de développement, et j'exécutais des requêtes sur testDatabase. Avant de lancer le test, je viens de changer ma base de données comme export MYSQL_DATABASENAME = test_database_name Et problème résolu.

+0

Si votre réponse a résolu votre question, veuillez cocher la coche verte en vert sur le côté de votre réponse pour confirmer qu'elle est résolue. – NobleUplift