Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Outils
Outils Forum d'entraide sur les outils pour MySQL. Avant de poster -> Outils MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2008, 16h08   #1
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 661
Points : 6 228
Points : 6 228
Envoyer un message via MSN à argyronet
Par défaut Mode transactionnel MySQL

Bonjour,

Souhaitant expérimenter cette possibilité qui s'avère indispensable pour un cas précis, sauriez-vous me dire si avec MySQL 4.0.17 il est possible de faire du mode transactionnel avec une connexion ODBC Direct.
Mes essais restent vains avec une perpetuelle erreur 3146 (ODBC) ou bien une non exécution du COMMIT (sans erreur cette fois).

Voici le bout de code concerné (ici en VB6 ou VBA)
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Sub TestTransaction(ByRef SQLExecute() AS String)
  ON Error GoTo TestTransaction_Error
 
  MySQLDB.Execute "SET AUTOCOMMIT=0;"
  MySQLDB.Execute "SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;"
  MySQLDB.Execute "START TRANSACTION;"
  FOR I = 0 TO UBound(SQLExecute())
     MySQLDB.Execute SQLExecute(I)
     DoEvents
  Next
  MySQLDB.Execute "COMMIT;"
 
  ON Error GoTo 0
TestTransaction_Exit:
  Exit Sub
 
TestTransaction_Error:
  MsgBox Err.Description, 16, Err.Number
  Resume TestTransaction_Exit
End Sub
En tentant la même expérience dans phpMyAdmin 2.6.0-pl2, je n'ai pas plus de succès... Merci pour ceux d'entre-vous qui auriez testé ce cas.

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 18h59   #2
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 409
Points : 6 409
Bonjour,

Pour pouvoir faire des transactions sous MySQL, il faut que le moteur des tables soit InnoDB. Il est activé dans MySQL depuis la version 4.0, donc ça devrait aller.
Maintenant, ce qui est fort probable, c'est que tes tables soient en MyIsam, et ne permettent donc pas de faire des transactions.
Si tu as la main sur la base et que tu souhaites les convertir, voilà le lien vers la FAQ qui explique comment faire.

ced
ced est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2008, 22h07   #3
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 661
Points : 6 228
Points : 6 228
Envoyer un message via MSN à argyronet
Oui, c'est vrai... le coup du myIsam.


Merci ced.
Je te tiens au courant...

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/04/2008, 12h33   #4
Rédacteur/Modérateur

 
Avatar de argyronet
 
Homme Jean-Philippe AMBROSINO
Panseur de bobos en solutions ETL
Inscription : mai 2004
Messages : 3 661
Détails du profil
Informations personnelles :
Nom : Homme Jean-Philippe AMBROSINO
Localisation : France

Informations professionnelles :
Activité : Panseur de bobos en solutions ETL
Secteur : Finance

Informations forums :
Inscription : mai 2004
Messages : 3 661
Points : 6 228
Points : 6 228
Envoyer un message via MSN à argyronet
OK, ced...
C'est la solution.
Ce qui est paradoxal autant que suprenant, c'est que si tu demandes un script avec mode transactionnel (en cochant la case Utiliser le mode transactionnel) le script est le suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
SET AUTOCOMMIT=0;
START TRANSACTION;
 
CREATE TABLE `MyTable` (
....
....
  `RecordDate` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY  (`nID`,`dtstk`),
  KEY `dtstk` (`dtstk`),
) TYPE=MyISAM;
 
INSERT INTO `MyTable` VALUES (....);
INSERT INTO `MyTable` VALUES (....);
INSERT INTO `MyTable` VALUES (....);
 
COMMIT;
Donc toujours avec le MyISAM !!!

Bref, une incompatiblité d'humeur

Merci encore.
++

Argy
__________________
Ils comptent sur vous...

Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Nouveau Tutoriel : Déployer vos applications avec Microsoft Access 2010
MDB Viewer : Visionneuse Access v4.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h46.


 
 
 
 
Partenaires

Hébergement Web