Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2011, 14h47   #1
Futur Membre du Club
 
Inscription : mai 2007
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 40
Points : 15
Points : 15
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 :
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 :
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 :
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 ?
bakka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 15h29   #2
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Citation:
MySQL n'aime pas trop le LIKE dans le DELETE ?
plutôt il n'aime pas l'opérateur LIKE appliqué à un champ BLOB
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 16h44   #3
Futur Membre du Club
 
Inscription : mai 2007
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 40
Points : 15
Points : 15
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 ?
bakka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 17h28   #4
Futur Membre du Club
 
Inscription : mai 2007
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 40
Points : 15
Points : 15
Quelques informations supplémentaires:

Code :
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 ?
bakka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 17h55   #5
Futur Membre du Club
 
Inscription : mai 2007
Messages : 40
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 40
Points : 15
Points : 15
La seul solution est de modifier le type de moteur utilisé.

Citation:
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
bakka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/06/2011, 21h15   #6
Membre éclairé
 
Inscription : avril 2009
Messages : 331
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : avril 2009
Messages : 331
Points : 397
Points : 397
Sinon,

Code :
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
mydb_server est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h51.


 
 
 
 
Partenaires

Hébergement Web