Bonjour,
J'essaie de faire un programme permettant:
- de sauvegarder une table d'une base mySQL vers une table d'une base postgreSQL,
- de libérer ensuite la place dans la base mySQL.
la sauvegarde est périodique.
Afin de garantir qu'il n'y a pas eu de perte de données en route (pb réseau, panne serveurs etc.) je réalise un recouvrement de données.
Ce recouvrement génère évidement un message d'erreur :
le code:
La sortie:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 if (!modelPg.submitAll())//QSqlTableModel modelPg(NULL,dbConnect); { qDebug() << modelPg.lastError().text(); qDebug() << "Type:" << modelPg.lastError().type(); qDebug() << "Number:"<< modelPg.lastError().number(); }
ERREUR: la valeur d'une clé dupliquée rompt la contrainte unique « Base24_pkey »
QPSQL: Unable to create query"
Type: 2
Number: -1
Ce qui est tout à fait cohérent mais insatisfaisant du fait du "-1".
Je souhaite en effet supprimer les lignes incriminés.
Je peux résoudre le problème "à l'aveugle" mais l'idée de me plait pas.
C'est à dire agir sans me préoccuper qu'il s'agit de la "bonne" erreur.
L'EditStrategy est à QSqlTableModel::OnManualSubmit
J'ai cherché du coté de QSqlError::setNumber() sans grand succès
Peut-être un paramétrage de la bdd... un fichier de conf à bidouiller ?
Précision:
Si je ne fait pas de recouvrement, tout fonctionne parfaitement. Le souci est uniquement de contrôler la nature de l'erreur.
Configuration :
Debian 6.0.4
Qt Creator 2.4.0
libqt4-sql-psql 4:4.6.3-4+squeeze1
postgresql-client-8.4 8.4.10-0squeeze1
Merci d'avance.
Partager