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

Requêtes MySQL Discussion :

Supprimer des lignes commençant par 'xxx' dans un champs de type blob


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 36
    Points
    36
    Par défaut Supprimer des lignes commençant par 'xxx' dans un champs de type blob
    Bonjour,

    Je ne parviens pas à exécuter une requête qui pourtant me parait simple.

    Je souhaiterais supprimer toutes les lignes d'une table qui commencent par un certain motif.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mysql> delete from errors_201010 where msg like '10.0%' ;
    ERROR 1031 (HY000): Table storage engine for 'errors_201010' doesn't have this option
    sachant que dans cette table j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    mysql> select msg from errors_201010 ;
    +-----------------------------------------------
    | msg                                           
    +-----------------------------------------------
    | 10.1.2.177 - - [30/Sep/2010:02:00:00 +0200]
    | 10.0.0.1 - - [30/Sep/2010:02:00:00 +0200]
    | 10.1.2.177 - - [30/Sep/2010:02:00:01 +0200]
    | 10.1.2.177 - - [30/Sep/2010:02:00:01 +0200]
    | etc...
    +-----------------------------------------------
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    mysql> describe errors_201010 ;
    +----------+-------------------------------------------------------------------------------------+------+-----+---------+-------+
    | Field    | Type                                                                                | Null | Key | Default | Extra |
    +----------+-------------------------------------------------------------------------------------+------+-----+---------+-------+
    | date     | datetime                                                                            | NO   |     | NULL    |       |
    | logfile  | varchar(128)                                                                        | YES  |     | NULL    |       |
    | logline  | int(10) unsigned                                                                    | YES  |     | NULL    |       |
    | loglevel | enum('WARNING','ERROR')                                                             | NO   |     | ERROR   |       |
    | type_msg | enum('LINE_TOO_LONG','NOT_MATCHED','TAG_NOT_FOUND','INVALID_REFERER','URL2SERVICE') | YES  |     | NULL    |       |
    | msg      | blob                                                                                | YES  |     | NULL    |       |
    +----------+-------------------------------------------------------------------------------------+------+-----+---------+-------+
    En gros, j'ai l'impression que MySQL n'aime pas trop le LIKE dans le DELETE ?

    Quelqu'un aurait un moyen pour faire ce DELETE ?

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 911
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 911
    Points : 6 032
    Points
    6 032
    Par défaut
    MySQL n'aime pas trop le LIKE dans le DELETE ?
    plutôt il n'aime pas l'opérateur LIKE appliqué à un champ BLOB

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 36
    Points
    36
    Par défaut
    Ce qui me perturbe un peu, c'est que sous oracle, la même requête avec le même type de champs blob passe bien.

    Alors je pose ma question différement, existe t il un moyen de supprimer des lignes commençant par 'x' dans un champs de type blob ?

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 36
    Points
    36
    Par défaut
    Quelques informations supplémentaires:

    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> show table status \G
    *************************** 1. row ***************************
               Name: errors_201010
             Engine: ARCHIVE
            Version: 10
         Row_format: Compressed
               Rows: 10
     Avg_row_length: 922
        Data_length: 9225
    Max_data_length: 9223372036854775807
       Index_length: 0
          Data_free: 0
     Auto_increment: NULL
        Create_time: 2011-06-24 11:01:12
        Update_time: 2011-06-24 11:01:12
         Check_time: NULL
          Collation: latin1_swedish_ci
           Checksum: NULL
     Create_options: 
            Comment: 
    1 row in set (0.00 sec)
    Et sur le site MySQL:
    The ARCHIVE engine supports INSERT and SELECT, but not DELETE, REPLACE, or UPDATE. It does support ORDER BY operations, BLOB columns, and basically all but spatial data types (see Section 11.17.4.1, “MySQL Spatial Data Types”). The ARCHIVE engine uses row-level locking.


    Donc toujours pas résolu mais j'vois où ça bloque, si quelqu'un a une idée, une méthode pour pouvoir faire ma suppression ?

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Points : 36
    Points
    36
    Par défaut
    La seul solution est de modifier le type de moteur utilisé.

    The ARCHIVE engine supports INSERT and SELECT, but not DELETE, REPLACE, or UPDATE. It does support ORDER BY operations, BLOB columns, and basically all but spatial data types (see Section 11.17.4.1, “MySQL Spatial Data Types”). The ARCHIVE engine uses row-level locking.
    http://dev.mysql.com/doc/refman/5.1/...ge-engine.html

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 331
    Points : 394
    Points
    394
    Par défaut
    Sinon,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE TABLE errors_201010_bis LIKE errors_201010;
    INSERT INTO errors_201010_bis SELECT * FROM errors_201010
    WHERE msg NOT LIKE '10.0%' ;
    DROP TABLE errors_201010;
    RENAME TABLE errors_201010_bis to errors_201010;
    Rachid

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

Discussions similaires

  1. [XL-2007] Comment supprimer des lignes d'une plage dans une colonne sous condition
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 05/06/2015, 11h34
  2. regex pour supprimer une ligne commençant par une lettre
    Par stpaul04 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 03/02/2011, 22h04
  3. [XL-2007] supprimer des lignes commençant par un mot précis.
    Par bedoch dans le forum Excel
    Réponses: 4
    Dernier message: 03/08/2010, 10h59
  4. Supprimer des tables commençant par.
    Par lito74 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/02/2009, 16h36
  5. Réponses: 3
    Dernier message: 25/05/2007, 10h10

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