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
- Les tables de ma base sont sous InnoDB
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
- 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
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'effectue un rollback
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)
- 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 mysql> ROLLBACK; Query OK, 0 rows affected (0.00 sec)
Je doute qu'il s'agisse du comportement normal du rollback d'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 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)
Avez-vous une idée ?
Pour infos, je suis sous windows et il s'agit de MYSQL 5.1.
Merci !
Partager