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

Administration MySQL Discussion :

TRANSACTION SERIALIZABLE ne change rien sur mes selects.


Sujet :

Administration MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 23
    Par défaut TRANSACTION SERIALIZABLE ne change rien sur mes selects.
    Bonjour,

    Je voudrais que dans ma base de données, les lectures soient impossibles lorsque une transaction est en cours.

    Or il est dit ICI :
    http://dev.mysql.com/doc/refman/5.0/...isolation.html

    "SERIALIZABLE Ce niveau est identique au précédent, mais toutes les lectures SELECT sont implicitement converties en SELECT ... LOCK IN SHARE MODE. "

    Donc j'ai paramétré ce mode de transaction, et j'ouvre 2 requeteur MYSQL.
    D'un coté, je fait un :
    START TRANSACTION
    UPDATE ts_utilisateur_uti SET uti_log = 'BBBB' WHERE uti_id =38;

    //je ne termine pas encore ma transaction Exprés

    et de l'autre coté, je fait :
    SELECT * FROM ts_utilisateur_uti


    Résultat : mon sélect s'execute en affichant l'ancienne valeur du champ alors que la transaction n'est pas terminée.

    Par contre, si je fait
    SELECT * FROM ts_utilisateur_uti LOCK IN SHARE MODE
    là ça bloque bien tant que je n'ais pas fait mon commit ou mon rollback de l'autre côté!!???

    Donc c'est contradictoire avec ce qu'ils disent : ça ne rajoute pas "LOCK IN SHARE MODE" implicitement.

    Quelqun a-t-il l'explication? Merci bien.

  2. #2
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Citation Envoyé par netoale Voir le message
    Bonjour,

    Je voudrais que dans ma base de données, les lectures soient impossibles lorsque une transaction est en cours.

    Or il est dit ICI :
    http://dev.mysql.com/doc/refman/5.0/...isolation.html

    "SERIALIZABLE Ce niveau est identique au précédent, mais toutes les lectures SELECT sont implicitement converties en SELECT ... LOCK IN SHARE MODE. "

    Donc j'ai paramétré ce mode de transaction, et j'ouvre 2 requeteur MYSQL.
    D'un coté, je fait un :
    START TRANSACTION
    UPDATE ts_utilisateur_uti SET uti_log = 'BBBB' WHERE uti_id =38;

    //je ne termine pas encore ma transaction Exprés

    et de l'autre coté, je fait :
    SELECT * FROM ts_utilisateur_uti


    Résultat : mon sélect s'execute en affichant l'ancienne valeur du champ alors que la transaction n'est pas terminée.

    Par contre, si je fait
    SELECT * FROM ts_utilisateur_uti LOCK IN SHARE MODE
    là ça bloque bien tant que je n'ais pas fait mon commit ou mon rollback de l'autre côté!!???

    Donc c'est contradictoire avec ce qu'ils disent : ça ne rajoute pas "LOCK IN SHARE MODE" implicitement.

    Quelqun a-t-il l'explication? Merci bien.
    Rien d'étonnant, il arrive que la traduction soit mal interprété. Regarde dans la version anglaise.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 23
    Par défaut
    bonjour berceker


    voici la traduction anglaise :
    "SERIALIZABLE : This level is like REPEATABLE READ, but InnoDB implicitly converts all plain SELECT statements to SELECT ... LOCK IN SHARE MODE. "

    donc moi je comprends la même chose.

    mais quand tu dit : Rien d'étonnant, pourais -tu m'expliquer pourquoi?

  4. #4
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    Je voulais dire par là qu'il était possible qu'il puisse avoir une erreur d'interprétation. Mais en effet, même dans la version anglaise je le comprend pareille. C'est bizarre, il se pourrait que ça puisse être un bug. Pour cela, tu peux ouvrir un ticket sur le site de mysql et discuter directement avec un contact support. Il pourra t'en dire plus sur ce point précis de la doc.

  5. #5
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Nous avons noté dans plusieurs cas que la traduction française de la documentation MySQL possédait des contre-sens, ceci allant parfois jusqu'à dire complètement l'inverse de la version anglaise.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 23
    Par défaut
    Merci berceker.

    Je ne sait pas si c'est un bug, ou un problème de manip, mais en tout cas le mode SERIALIZABLE corresponds bien à ce que je pense (même description pour microsoft SQL Serveur : interdit la lecture pendant les transactions.).

    Donc si la seule solution c'est d'ouvrir un ticket.... ... je veut bien, oui.

  7. #7
    Membre éprouvé
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 514
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 514
    Par défaut
    http://bugs.mysql.com/
    Il faut ouvrir un compte et tu pourras discuter avec des développeurs.
    En tout cas merci d'avoir signalé cela car ce que tu fais me donne des idées

Discussions similaires

  1. Mettre des images sur mes repères et change lors d'un clic
    Par a.collery dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 15/01/2015, 14h29
  2. Réponses: 1
    Dernier message: 24/01/2014, 23h30
  3. Evénement change() sur un select
    Par Invité dans le forum jQuery
    Réponses: 8
    Dernier message: 13/01/2014, 09h17
  4. change() sur un select plante avec val()
    Par SpaceFrog dans le forum jQuery
    Réponses: 2
    Dernier message: 26/07/2012, 11h40
  5. ajout de colonnes sur une selection
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/08/2004, 17h44

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