Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection



  • Salut tout le monde
    j'essaie de connecter mon application qt à mysql, je sais pas pourquoi ça m'affiche en message d'erreur : QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connection removed.
    can someone help me please, this is my code :

    void MainWindow::on_pushButton_clicked()
    {
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("127.0.0.1");
    db.setUserName("root");
    db.setPassword("");
    db.setDatabaseName("pmkfinal");
    if(db.open()){
    QMessageBox::information(this,"Connection","Database Connected Successfully");
    }else{
    QMessageBox::information(this,"Connection","Database not Connected Successfully");
    }

    }

    Thank you All
    j'ai essayé en nommant la connection, en mettant une condition contains() avant de me connecter mais ca ne marche toujors pas quelqu'un pourrait m'aider s'il vous plait!!


  • Lifetime Qt Champion

    Bonjour,

    A chaque appelle de cette méthode, la connection par défaut est créée une nouvelle fois et du coup remplace l'ancienne et génère ce message d'avertissement. Soit il faut créer la connection une fois et la réutiliser soit il faut la retirer à la fin de cette méthode.



  • Merci pour votre réponse, le problème c'est qu'en retirant la connection à la fin de cette méthode ça m'affiche un autre message d'erreur indiquant qu'elle est toujours utilisée et que je perdrai toutes mes requêtes.
    Quand j'utilise QSqlDatabase::database au lieu de QSqlDatabase::addDatabase pour utiliser ma connection au lieu de la recréer ca n'affiche aucun message d'erreur par contre ne connecte toujours pas ma base de donnée. merci pour votre aide


  • Lifetime Qt Champion

    La technique pour le faire correctement est décrite dans la documentation de removeDatabase.



  • This post is deleted!


  • @SGaist Merci pour votre aide, j'ai réussi à le faire marché par contre maintenant en essayant d’exécuter la requête ça m'affiche l’erreur suivante : QSqlQuery::exec: database not open voici mon code :

    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");

    void MainWindow::on_pushButton_clicked()
    {
    db.setHostName("127.0.0.1");
    db.setUserName("root");
    db.setPassword("");
    if(db.open()){
    QMessageBox::information(this,"Connection","Database Connected Successfully");
    }else{
    QMessageBox::information(this,"Not connected","Database not Connected Successfully");
    db.lastError();
    }
    {
    db.setDatabaseName("PMK");
    QSqlQuery query;
    query=QSqlQuery(db);
    query.exec("CREATE TABLE Products(Price int");

    }
    db.close();
    }


  • Lifetime Qt Champion

    Est-ce que db est devenu une variable static ?



  • c'etait juste pour voir si ça pourrait arranger les choses mais çà n'a pas marché, maintenant j'ai l'erreur suivante :
    QSqlDatabasePrivate::database: unable to open database: "Access denied for user 'root'@'localhost' (using password: NO) QMYSQL: Unable to connect"
    auriez vous une idée pour la résoudre s'il vous plait. Merci.


  • Lifetime Qt Champion

    Malheureusement non, il n'y avait aucune chance pour que cela aide. Il est même spécifiquement recommander dans la documentation de ne pas garder de variable de type QSqlDatabase.

    La connection en elle-même fonctionne. C'est un réglage de MySQL qui râle.

    Comment est-ce que la base de données est configurée ?


Log in to reply