Forum Programmation.SQL [RESOLU] sqlite3 UPDATE entrée json

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
1
30
mar.
2025

Bonjour!

Je cherche à mettre à jour une entrée dans un base sqlite avec sqlite3 mais ensuite au lancement de l'application qui utilise cette base j'ai un Warning et mon entrée est ignorée.

WARNING --> Found an invalid model config in the database. Ignoring this model.

La commande que j'utilise :

sqlite3 invokeai.db "UPDATE models SET config = json_replace(config, '$.trigger_phrases', '[style of Michelangelo Buonarroti, oil painting]') WHERE name = 'sdxl_style_of_michelangelo_buonarroti_v1.0';"

L'entrée à l'air correcte :

{"key":"c832fc50-2586-40c1-95ff-2b20a4e31f0c","hash":"blake3:a7990bd979113708d5bd7a296371b97460a6469950994b20929242ab116d8eaa","path":"/whatever/sdxl_style_of_michelangelo_buonarroti_v1.0.safetensors","name":"sdxl_style_of_michelangelo_buonarroti_v1.0","type":"lora","format":"lycoris","base":"sdxl","source":"/whatever/sdxl_style_of_michelangelo_buonarroti_v1.0.safetensors","source_type":"path","description":"sdxl lora model sdxl_style_of_michelangelo_buonarroti_v1.0","source_api_response":null,"cover_image":null,"submodels":null,"trigger_phrases":"[style of Michelangelo Buonarroti, oil painting]"}

Une chose n'est pas correcte : la valeur de la colonne trigger_phrases est [style of Michelangelo Buonarroti, oil painting] mais devrait être ["style of Michelangelo Buonarroti, oil painting"] c'est une colonne de type VIRTUAL qui est generée en lisant le contenu de la valeur trigger_phrases de la colonne config au format json qui vient d'être mise à jour:

trigger_phrases TEXT GENERATED ALWAYS as (json_extract(config, '$.trigger_phrases')) VIRTUAL

Quelqu'un pour m'aiguiller sur la bonne façon de faire svp?

  • # Hello

    Posté par  . Évalué à 2 (+1/-0).

    Pas tout a fait au point sur sqlite3 (j'apprends en te lisant que ca supporte le json!),
    mais j'ai comme l'impression que tu as tout betement inverse les ' et les [] dans ta commande.

    ++
    Gi)

  • # résolu!

    Posté par  (site web personnel) . Évalué à 2 (+1/-0).

    Je m'auto-réponds.

    c'est json_set qu'il fallait utiliser pour s'assurer de la cohérence du json et aussi s'assurer que trigger_phrases soit un tableau et non une chaîne :

    sqlite3 invokeai.db "UPDATE models SET config = json_set(config, '$.trigger_phrases', json('[\"style of Michelangelo Buonarroti, oil painting\"]')) WHERE name = 'sdxl_style_of_michelangelo_buonarroti_v1.0';"

    wind0w$ suxX, GNU/Linux roxX!

    • [^] # Re: résolu!

      Posté par  (site web personnel) . Évalué à 3 (+1/-0). Dernière modification le 31 mars 2025 à 22:35.

      écrit sur plusieurs lignes, c'est un peu plus lisible

      sqlite3 invokeai.db "UPDATE models 
      SET config = json_set(config, 
                    '$.trigger_phrases', 
                    json('[\"style of Michelangelo Buonarroti, oil painting\"]')) 
      WHERE name = 'sdxl_style_of_michelangelo_buonarroti_v1.0';"

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.