Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec 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 19/06/2011, 17h24   #1
Membre régulier
 
Laurent
Développeur .NET
Inscription : novembre 2007
Messages : 90
Détails du profil
Informations personnelles :
Nom : Laurent
Âge : 26
Localisation : France, Yonne (Bourgogne)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 90
Points : 72
Points : 72
Par défaut Rollback & Innodb

Bonjour,

J'ai une question sans doute stupide mais assez désopilante. Comment fonctionne les transactions avec InnoDB sous MYSQL ?

Voici mon problème :
- J'ai une base de données sous mysql et InnoDB par défaut
Code :
1
2
3
 
# The default storage engine that will be used when create new tables when
default-storage-engine=INNODB
- Les tables de ma base sont sous InnoDB
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
mysql> SHOW TABLE STATUS;
+-------------+--------+---------+------------+------+----------------+---------
----+-----------------+--------------+-----------+----------------+-------------
--------+-------------+------------+-----------------+----------+---------------
-+---------+
| Name        | Engine | Version | Row_format | Rows | Avg_row_length | Data_len
gth | Max_data_length | Index_length | Data_free | AUTO_INCREMENT | Create_time
        | Update_time | Check_time | Collation       | Checksum | Create_options
 | Comment |
+-------------+--------+---------+------------+------+----------------+---------
----+-----------------+--------------+-----------+----------------+-------------
--------+-------------+------------+-----------------+----------+---------------
-+---------+
| address     | InnoDB |      10 | Compact    |    4 |           4096 |       16
384 |               0 |            0 |   4194304 |             12 | 2011-06-19 1
5:54:26 | NULL        | NULL       | utf8_general_ci |     NULL |
 |         |
| corporation | InnoDB |      10 | Compact    |    1 |          16384 |       16
384 |               0 |        49152 |   4194304 |             12 | 2011-06-19 1
5:54:26 | NULL        | NULL       | utf8_general_ci |     NULL |
 |         |
| profile     | InnoDB |      10 | Compact    |    3 |           5461 |       16
384 |               0 |            0 |   4194304 |              8 | 2011-06-19 1
5:54:26 | NULL        | NULL       | utf8_general_ci |     NULL |
 |         |
| user        | InnoDB |      10 | Compact    |    5 |           3276 |       16
384 |               0 |        32768 |   4194304 |             11 | 2011-06-19 1
5:54:26 | NULL        | NULL       | utf8_general_ci |     NULL |
 |         |
+-------------+--------+---------+------------+------+----------------+---------
----+-----------------+--------------+-----------+----------------+-------------
--------+-------------+------------+-----------------+----------+---------------
-+---------+
4 rows IN SET (0.08 sec)
- J'accéde à une de mes tables pour y effectuer un INSERT
Code :
1
2
3
 
mysql> INSERT INTO address (version, line1,zipcode, town, country) VALUES (0,'hahaha', '89600', 'Chez moi', 'Pays');
Query OK, 1 row affected (0.09 sec)
- J'effectue un rollback
Code :
1
2
3
 
mysql> ROLLBACK;
Query OK, 0 rows affected (0.00 sec)
- La valeur est inséré dans la table, le rollback n'a rien fait !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
mysql> SELECT * FROM address;
+----+---------+---------------------+-------+-------+---------+----------+-----
----+
| ID | version | LINE1               | LINE2 | LINE3 | ZIPCODE | TOWN     | COUN
TRY |
+----+---------+---------------------+-------+-------+---------+----------+-----
----+
|  1 |       0 | Rue des maronniers  | NULL  | NULL  | 75016   | Paris    | Fran
ce  |
|  2 |       0 | 4Rue des maronniers | NULL  | NULL  | 75012   | Paris    | Fran
ce  |
|  8 |       0 | 0Rue des maronniers | NULL  | NULL  | 75016   | Paris    | Fran
ce  |
| 10 |       0 | 2Rue des maronniers | NULL  | NULL  | 75016   | Paris    | Fran
ce  |
| 12 |       0 | hahaha              | NULL  | NULL  | 89600   | Chez moi | Pays
    |
+----+---------+---------------------+-------+-------+---------+----------+-----
----+
5 rows IN SET (0.01 sec)
Je doute qu'il s'agisse du comportement normal du rollback d'innodb...

Avez-vous une idée ?

Pour infos, je suis sous windows et il s'agit de MYSQL 5.1.

Merci !
Laur3nT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 17h41   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
Réponse dans la doc.

Tu ne peux "rollbacker" que dans la même transaction. En lançant une requête dans la console MySQL, celle-ci s'exécute et te donne le résultat. La transaction est terminée. Trop tard pour faire un ROLLBACK.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 19h05   #3
Membre régulier
 
Laurent
Développeur .NET
Inscription : novembre 2007
Messages : 90
Détails du profil
Informations personnelles :
Nom : Laurent
Âge : 26
Localisation : France, Yonne (Bourgogne)

Informations professionnelles :
Activité : Développeur .NET
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 90
Points : 72
Points : 72
Ah ok.
Celle là, je ne m'y attendais pas !

Merci à toi
Laur3nT 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 01h29.


 
 
 
 
Partenaires

Hébergement Web