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

Langage SQL Discussion :

Impossibilité de supprimer un enregistrement


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Impossibilité de supprimer un enregistrement
    Bonjour,
    J'ai une base db dans laquelle je souhaitais supprimer un enregistrement, malgré plusieurs essais la ligne est toujours là. Je supprime ma ligne avec supprimer l'enregistrement, j'enregistre les modifications puis je ferme ma base. A la réouverture de celle ci la ligne de données est toujours présente. Par curiosité, j'ai supprimé d'autres lignes, et la suppression a bien été enregistré. Il s'agit d'une base créé par le logiciel Domoticz Quelqu'un aurait il une solution pour la suppression de cette ligne ? Merci d'avance.

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Ici, c'est le forum consacré au langage SQL, or, d'après ce que je comprends, vous ne supprimez pas les lignes par requête (vous ne lancez pas d'ordre DELETE... FROM .... WHERE...), mais grâce à une interface d'une application appelée "Domoticz".
    Si c'est bien le cas, il faut vous rapprocher du fournisseur de cette application

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    Dans les faits j'enregistre le fichier domoticz.db dans mes documents ,puis je l'ouvre avec le DB BROWSER SQLite, dans ce logiciel je fais les opérations précitées, j'ai aussi déjà essayé avec le code DELETE et le résultat est le même.
    ll ne s'agit que d'un enregistrement qui ne se supprime pas; les autres se suppriment sans problème.Merci pour votre aide

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Si possible, donne le fichier, et la requête exécutée qui ne supprime rien (et ne renvoie pas de message d'erreur ?)
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Bonjour,
    Je n'arrive pas à charger le fichier sur le site, je vous mets un lien avec google drive: https://drive.google.com/file/d/1f-l...ew?usp=sharing.
    Ma commande DELETE FROM DeviceStatus WHERE ID=148 s'exécute avec succès
    L'exécution s'est terminée sans erreur.
    Résultat : Requête exécutée avec succès. Elle a pris 0 ms , 0 enregistrements affectés
    À la ligne 1 :
    DELETE FROM DeviceStatus WHERE ID=148

    Pourtant l'enregistrement reste bien présent dans la base, et ce que je ne comprends pas c'est que 0 enregistrement ont été affecté par cette commande.
    Si j'exécute la commande sur un autre ID par exemple le 25, j'obtiens cela :
    L'exécution s'est terminée sans erreur.
    Résultat : Requête exécutée avec succès. Elle a pris 0 ms , 1 enregistrements affectés
    À la ligne 1 :
    DELETE FROM DeviceStatus WHERE ID=25

    et l'enregistrement est bien effacé.
    Merci d'avance

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    C'est donc que soit l'ID 148 n'existe pas, soit vous n'êtes pas connecté à la bonne DB.

    Que donne cette requête : SELECT * FROM DeviceStatus WHERE ID=148 ?

    D'une façon générale, pour une requête ponctuelle, il est recommandé de faire un SELECT avant un UPDATE ou un DELETE pour vérifier la portée de la clause WHERE et s'assurer qu'on ne va bien impacter que les lignes souhaitées .

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Il est probable qu'il existe une intégrité référentielle en mode cascade entre les deux tables. Dans ce cas la suppression de la ligne dans le table maître entraine la suppression des lignes filles dépendantes.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Bonsoir escartefigue,

    La requête SELECT*FROM DeviceStaus WHERE ID = 148 donne :

    L'exécution s'est terminée sans erreur.
    Résultat : 112 enregistrements ramenés en 8ms
    À la ligne 1 :
    SELECT*FROM DEviceStatus WHERE ID - 148
    Ce qui est bizarre, c'est que DB Browser dans l'onglet « Exécuter le SQL » m'affiche ma base de données et la ligne ID 148 n'y existe plus :

    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    147	21	82147	1	Compteur TV Salon	1	113	0	3	0	12	255	0	5168.4786111131	2023-11-19 21:20:59	139	0.0	1.0	0.0	1.0			0	0	21	Compte depuis le 10/12/20                                           
    Ping 192.168.0.3	ValueQuantity:VGVtcHM=;ValueUnits:SGV1cmVz	
    149	21	82149	1	Fonct. Bruleur Fuel	1	113	0	3	0	12	255	0	315.94055555457	2023-12-15 10:02:04	129	-62.0	1.0	0.0	1.0			0	0	21	Compte sur activation icone interrupteur Bruleur Fuel	ValueQuantity:VGVtcHMg;ValueUnits:SGV1cmVz	[/I]
    Cependant quand je reviens dans l'onglet parcourir les données elle y est encore, de plus il n'y a pas de modifications a enregistrer
    147	21	82147	1	Compteur TV Salon	1	113	0	3	0	12	255	0	5168.4786111131	2023-11-19 21:20:59	139	0.0	1.0	0.0	1.0			0	0	21	Compte depuis le 10/12/20                                           
    Ping 192.168.0.3	ValueQuantity:VGVtcHM=;ValueUnits:SGV1cmVz	
    148	24	0335133784cca8904f9e	1	Vanne Eau Chaude	1	244	73	0	0	12	255	0	Off	2023-11-20 15:05:22	61	0.0	1.0	0.0	1.0			0	0	112	Provenance de l'eau chaude :
    Off = Chauffe Eau Thermodynamique
    On = Chaudière Fuel	
    149	21	82149	1	Fonct. Bruleur Fuel	1	113	0	3	0	12	255	0	315.94055555457	2023-12-15 10:02:04	129	-62.0	1.0	0.0	1.0			0	0	21	Compte sur activation icone interrupteur Bruleur Fuel	ValueQuantity:VGVtcHMg;ValueUnits:SGV1cmVz

  9. #9
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    https://drive.google.com/file/d/1f-l...ew?usp=sharing

    N'est pas accessible. Autorise les accès si tu veux qu'on checke.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut Accès au fichier
    Désolé j'avais oublié de donner les droits

  11. #11
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 104
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 104
    Points : 8 222
    Points
    8 222
    Billets dans le blog
    17
    Par défaut
    Il semble que le comportement de SQLite est ici anormal.

    select all id
    from DeviceStatus 
    where id = 148;
    => 0 ligne

    select all id
    from DeviceStatus 
    where (id * 1) = 148;
    => 1 ligne, DeviceStatus.ID est pourtant bien typée INT

    Sur un BETWEEN on retrouve bien aussi la ligne ID 148, mais les bornes sont souvent faussées...

    Après un VACUUM main; tout semble rentrer dans l'ordre.

    select all id
    from DeviceStatus 
    where id = 148;
    => 1 ligne

    https://sqlite.org/lang_vacuum.html
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 22
    Points : 18
    Points
    18
    Par défaut
    Merci beaucoup Séb. je vous souhaite de joyeuses fêtes

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

Discussions similaires

  1. SQLite : impossibilité de supprimer un enregistrement
    Par polesud dans le forum Bases de données
    Réponses: 0
    Dernier message: 01/05/2022, 12h54
  2. HELP!Comment supprimer des enregistrements de tables jointes
    Par ROOTPARIS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/06/2004, 16h41
  3. Supprim un enregistrement de table2 si le même dans table1
    Par arno24 dans le forum Bases de données
    Réponses: 15
    Dernier message: 27/02/2004, 22h40
  4. [LG]supprimer un enregistrement dans un fichier
    Par Marcus2211 dans le forum Langage
    Réponses: 10
    Dernier message: 17/11/2003, 00h59
  5. [VB6] Supprimer un enregistrement dans une ListView ??
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/11/2002, 09h37

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