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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !