IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Rollback & Innodb


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Yonne (Bourgogne)

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    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 : 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 !

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 : 16 814
    Billets dans le blog
    14
    Par défaut
    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 Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2007
    Messages
    99
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Yonne (Bourgogne)

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 99
    Par défaut
    Ah ok.
    Celle là, je ne m'y attendais pas !

    Merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plantage répétés InnoDB
    Par yawi dans le forum Installation
    Réponses: 2
    Dernier message: 02/11/2003, 00h15
  2. Le rollback explose au moment du FETCH d'un Curseur
    Par Krashtest dans le forum Administration
    Réponses: 10
    Dernier message: 18/08/2003, 09h46
  3. commit et rollback....?
    Par The_Nail dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/06/2003, 14h36
  4. [VB6]ADODB Command, recuperer l'info d'un RollBack
    Par Mouse dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 19/05/2003, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo