Heidisql: amĂ©lioration : (ajouter une option) restaurer les requĂȘtes non enregistrĂ©es

CrĂ©Ă© le 16 fĂ©vr. 2018  Â·  43Commentaires  Â·  Source: HeidiSQL/HeidiSQL

Comportement actuel

  • les nouvelles requĂȘtes s'ouvrent dans un nouvel onglet et ont un * lorsqu'elles ne sont pas enregistrĂ©es
  • Ă  la fermeture, l'utilisateur HeidiSQL est invitĂ© Ă  enregistrer ces requĂȘtes
  • les requĂȘtes non enregistrĂ©es sont perdues lors du prochain redĂ©marrage de HeidiSQL

Comportement attendu

  • Option pour l'utilisateur de restaurer les requĂȘtes non enregistrĂ©es la prochaine fois
  • Notepad ++ l'a par dĂ©faut, que les onglets non enregistrĂ©s sont automatiquement enregistrĂ©s et restaurĂ©s
  • le navigateur a Ă©galement la possibilitĂ© de restaurer les onglets au prochain redĂ©marrage
  • si HeidiSQL plante, il ne perdra pas ces requĂȘtes utilisateur

Solution possible

  • HeidiSQL pourrait enregistrer automatiquement ses onglets de requĂȘte dans %appdata%\HeidiSQL\unsaved Queries
  • si cela est activĂ©, HeidiSQL ne demandera plus de les enregistrer.

Environnement

  • Version HeidiSQL :
    9.5.0.5248
  • SystĂšme opĂ©rateur:
    Windows 10 1709

Commenter

J'utilise ces requĂȘtes pour le dĂ©bogage. Ils ne sont pas assez pertinents pour les conserver pour toujours, mais j'aimerais qu'ils soient lĂ  pendant 1 Ă  2 semaines jusqu'Ă  ce qu'ils ne soient plus pertinents.

feature

Commentaire le plus utile

C'est l'un des souhaits les plus longs et les plus longs de nombreux utilisateurs, ce sera donc l'une des prochaines fonctionnalités que je vais implémenter.

Tous les 43 commentaires

de plus, il serait bien d'ĂȘtre utile d'appuyer sur F2 sur un onglet de requĂȘte pour le renommer en place (sans boĂźte de dialogue d'enregistrement de fichier) car la requĂȘte 1, la requĂȘte 2, la requĂȘte 3, la requĂȘte 4 est difficile Ă  distinguer.

J'ai aussi souvent plusieurs fenĂȘtres ouvertes de HeidiSQL. Dans ce cas, il pourrait vĂ©rifier si c'est-Ă -dire. Query 1.sql existe dĂ©jĂ  dans le dossier %appdata% et parcourez le nombre jusqu'Ă  ce qu'il n'y ait plus de collision de fichiers.
Lorsque toutes les fenĂȘtres HeidiSQL sont fermĂ©es et qu'une nouvelle instance est dĂ©marrĂ©e, toutes ces requĂȘtes non enregistrĂ©es s'ouvriront Ă  nouveau dans une instance. Cela pourrait devenir dĂ©sordonnĂ©, mais je suppose qu'il n'y a pas moyen de contourner cela. C'est le moment de faire le mĂ©nage.

Merci pour le meilleur navigateur SQL sur Windows !

Je pense que le problĂšme avec plusieurs instances pourrait ĂȘtre partiellement rĂ©solu si les onglets non enregistrĂ©s sont enregistrĂ©s dans des sous-dossiers par nom de connexion comme :
%appdata%HeidiSQL\unsaved Queries\[CONNECTION_NAME]\query_*.sql dans mon cas, j'ai l'habitude d'avoir plusieurs instances ouvertes mais connectées à des bases de données différentes.

N'oubliez pas que cette amélioration a été demandée pour la premiÚre fois en 2012 :

https://sourceforge.net/p/heidisql/tickets/2991/

Quelques migrations de suivi des problĂšmes depuis lors...

Merci pour vos efforts, les gars. J'aime beaucoup HeidiSQL, mais j'ai parfois peur de l'utiliser car il ne sauvegarde pas votre travail.

SincÚres amitiés

Je vote aussi pour ça. Changement assez simple (en apparence), mais une amélioration majeure de l'expérience utilisateur !

MySql Workbench rouvre mĂȘme les onglets qui ont Ă©tĂ© enregistrĂ©s mais visibles lorsque le programme est fermĂ© et rouvert, pas seulement les requĂȘtes non enregistrĂ©es. Ceci est utile lorsque vous travaillez sur un projet qui nĂ©cessite plusieurs requĂȘtes pour ĂȘtre compris, mais qui s'Ă©tend sur plusieurs jours en raison d'interruptions de phb :)

J'aimerais aussi voir ça.

J'utilise Heidi pour toutes les requĂȘtes MySQL que je fais, et ce serait une trĂšs belle amĂ©lioration.

Il s'agit d'une caractéristique essentielle. J'aime Heidi et j'apprécie tous les grands efforts, mais je donnerais la priorité à cela par rapport à d'autres améliorations.

Cette fonctionnalitĂ© augmenterait considĂ©rablement mon flux de travail, car je n'ai pas le temps d'enregistrer chaque requĂȘte - mais je pourrais en avoir besoin plus tard.

Je cherchais cela aussi. Mon collĂšgue m'a dit qu'il aimait Heidi mais c'est une fonctionnalitĂ© qui lui manque et qui l'aiderait beaucoup. J'espĂšre qu'il sera bientĂŽt mis en Ɠuvre.

J'attends également cette fonctionnalité avec impatience. Améliorera beaucoup mon expérience.

Cela permettrait Ă©galement d'Ă©conomiser ceux qui subissent des plantages frĂ©quents de HeidiSQL et perdent des requĂȘtes volumineuses sur lesquelles ils travaillaient. Souvent, lorsqu'un plantage se produit, une boĂźte de dialogue d'exception s'affiche et parfois, cliquer sur "continuer" fermera le programme, ou "continuer" ne sera pas disponible. Dans les deux cas, essayer de copier la requĂȘte hors de l'onglet avant de fermer la boĂźte d'exception n'est pas possible et les requĂȘtes non enregistrĂ©es sont perdues. Notepad ++ a Ă©galement cette fonctionnalitĂ© et cela m'a sauvĂ© d'innombrables fois.

Salut @ansgarbecker , puisque pas mal de personnes trouveraient cela utile, pouvez-vous nous dire si vous avez déjà travaillé dessus ou quand nous pouvons nous attendre à cela dans une version nocturne ? Bien sûr, vous avez un tas d'autres choses dans votre jalon 10.2. Il ne s'agit pas de précipiter quoi que ce soit, juste de l'information.

C'est l'un des souhaits les plus longs et les plus longs de nombreux utilisateurs, ce sera donc l'une des prochaines fonctionnalités que je vais implémenter.

Fantastique nouvelle, merci @ansgarbecker !

Notepad++ a cette fonctionnalité de restauration, et sa boßte de dialogue de préférences ressemble à ceci :
grafik
Alors que HeidiSQL n'a que cette option :
grafik

Ainsi, l'approche dans Notepad ++ manque l'option d'ignorer le texte non enregistrĂ© dans un onglet sans mĂȘme l'enregistrer automatiquement.

Afin de ne pas casser cette ancienne fonctionnalité de HeidiSQL, je devrais ajouter un nouvel onglet "Fichiers" à la boßte de dialogue des préférences, contenant cette ancienne case à cocher "_Inviter à enregistrer_". De plus, nous aurons une nouvelle case à cocher comme dans Notepad++, intitulée "_Sauvegarder automatiquement les fichiers non enregistrés_". Cette option s'applique aux onglets _laissés ouverts_ lors de la sortie de HeidiSQL, et non aux onglets _fermés_, contrairement à l'option _Invite_.

Et enfin, je pense qu'il n'est mĂȘme pas nĂ©cessaire de personnaliser l'intervalle d'enregistrement de ces sauvegardes, comme dans Notepad ++. Au lieu de cela, Heidi devrait enregistrer ces fichiers temporaires toutes les 10 secondes, et uniquement si le contenu a Ă©tĂ© modifiĂ©.

Au fait, est-ce une bonne idée d'omettre les fichiers de plus de 10 Mo ? Je suis sûr que ces fichiers plus volumineux sont normalement générés automatiquement. Et cela peut introduire un problÚme de performances si HeidiSQL, par exemple, doit enregistrer un fichier de 5 Go toutes les 10 secondes.

10 Mo de son beaucoup trop je trouve. Si j'exporte des données au format SQL et que je les colle dans un onglet, je ne veux pas que cela soit enregistré.
10kb ou 100kb seraient dĂ©jĂ  de trĂšs grosses requĂȘtes.
Qu'en est-il de mettre la taille du fichier comme autre option si vous créez déjà un nouvel onglet de paramÚtres ? Ma limite serait probablement d'environ 10kb.

Oui, je pense que 10 Mo est énorme pour un fichier. Si vous souhaitez effectuer une personnalisation complÚte, il peut s'agir d'un champ configurable dans lequel vous définissez la taille maximale en Ko.

Pour s'assurer que cette fonctionnalitĂ© est effectuĂ©e correctement, il convient de rĂ©flĂ©chir Ă  la possibilitĂ© de rĂ©cupĂ©rer d'un cache corrompu qui empĂȘche HeidiSQL de se charger correctement, comme une option de ligne de commande pour ignorer le chargement des requĂȘtes enregistrĂ©es en arriĂšre-plan, ou au lancement aprĂšs un crash donner le option pour ignorer le chargement des requĂȘtes enregistrĂ©es en arriĂšre-plan qui peuvent l'empĂȘcher de dĂ©marrer.

De plus, en ce qui concerne la taille du fichier, je suppose qu'il serait assez simple de compresser les requĂȘtes avant de les enregistrer sur le disque, car le texte SQL est hautement compressible. Les requĂȘtes trĂšs volumineuses ont probablement beaucoup de texte rĂ©pĂ©titif et pourraient ĂȘtre considĂ©rablement rĂ©duites en taille avec la plupart des algorithmes de compression.

J'aimerais beaucoup cette fonctionnalité. J'aimerais aussi des sushis.

J'apprécierais cette fonctionnalité.

Je pense avoir la plupart des parties de cette nouvelle fonctionnalitĂ© prĂȘtes Ă  l'emploi. Certaines chaĂźnes de traduction manquent encore et n'ont probablement pas encore Ă©tĂ© suffisamment testĂ©es. Pour tous ceux qui veulent tester la nouvelle fonctionnalitĂ© de restauration automatique :

  • mise Ă  jour vers la nouvelle version nocturne
  • faites attention aux onglets de requĂȘte non enregistrĂ©s, soit aprĂšs le chargement d'un fichier Ă  partir du disque dur, soit sans fichier Ă  l'arriĂšre
  • si vous voulez savoir plus exactement ce qui se passe :

    • activez PrĂ©fĂ©rences > Logging > Messages "Debug"

    • regarder le rĂ©pertoire crĂ©Ă© automatiquement C:\Users\<yourUsername>\AppData\Roaming\HeidiSQL\Backups\

    • regarder le nouveau fichier d'installation C:\Users\<yourUsername>\AppData\Roaming\HeidiSQL\tabs.ini

La fonction de restauration automatique est activĂ©e par dĂ©faut et peut ĂȘtre dĂ©sactivĂ©e dans PrĂ©fĂ©rences > Fichiers > "Rouvrir les fichiers SQL prĂ©cĂ©demment utilisĂ©s..."

Je pense que l'implĂ©mentation actuelle n'est pas encore sĂ»re contre l'exĂ©cution de plusieurs instances... Veuillez en ĂȘtre conscient si vous utilisez dĂ©jĂ  cette fonctionnalitĂ©.

rien d'important ne doit rester non enregistrĂ© de toute façon. Cela ne peut pas ĂȘtre pire qu'avant la mise en Ɠuvre de la fonctionnalitĂ© lorsque toutes les requĂȘtes non enregistrĂ©es avaient disparu par dĂ©faut.

Pas vraiment. Auparavant, il avertissait des requĂȘtes non enregistrĂ©es et ne se fermait pas tant que vous ne les aviez pas enregistrĂ©es ou supprimĂ©es.
Si atm se ferme sans invite et Ă©crase d'autres requĂȘtes, c'est en effet dangereux. Merci d'avoir signalĂ© @ansgarbecker

  • regarder le rĂ©pertoire crĂ©Ă© automatiquement C:\Users\<yourUsername>\AppData\Roaming\HeidiSQL\Backups\
  • regarder le nouveau fichier d'installation C:\Users\<yourUsername>\AppData\Roaming\HeidiSQL\tabs.ini

Sera-t-il également implémenté pour la version portable ?

Le portable est le mĂȘme exĂ©cutable que la version normale, il est simplement signalĂ© via le fichier portable.lock. Mais je suppose que votre question Ă©tait destinĂ©e aux rĂ©pertoires, qui ne sont pas "tout Ă  fait portables". Eh bien, je n'en voyais pas encore la nĂ©cessitĂ©, mais cela peut avoir du sens. Dans la version portable, le tabs.ini pourrait vivre dans le rĂ©pertoire avec heidisql.exe, et le rĂ©pertoire "Backups" pourrait ĂȘtre crĂ©Ă© automatiquement en tant que sous-dossier de celui-ci. Cela a-t-il du sens?

Exact, quelque chose comme ça.

Le "tabs.ini" qui se trouvait au mĂȘme endroit que l'exĂ©cutable heidiSql.exe (ainsi que sa configuration), pour toutes les versions, portables et installables.

Le rĂ©pertoire "sauvegardes" ou que son emplacement pourrait ĂȘtre configurĂ© (soit via l'interface graphique de configuration, soit en Ă©ditant le fichier de configuration) ou Ă  dĂ©faut, par exemple s'il dĂ©tecte le fichier "portable.lock" ou 2portable_settings.txt", alors crĂ©ez les directirios" backups" au mĂȘme endroit, sinon, dans %appdata%\heidisql (par exemple)

Merci

Fini:
[x] empĂȘche les verrous de fichiers lorsque plusieurs instances accĂšdent Ă  tabs.ini
[x] stocker les tabs.ini et le dossier de sauvegardes localement en mode portable

Il est toujours possible qu'une instance écrase un fichier de sauvegarde d'une autre instance en cours d'exécution. Alors j'ai pensé que je pouvais ajouter quelque chose comme ceci:

  • stocker l'ID de processus actuel dans chaque section de tabs.ini
  • lors de la restauration des onglets, vĂ©rifiez si l'ID de processus est en cours d'exĂ©cution

    • s'il est toujours en cours d'exĂ©cution : ne restaurez pas cet onglet

    • s'il n'est pas en cours d'exĂ©cution : remplacez-le par l'ID de processus actuel et l'onglet de restauration

Lire : la premiÚre instance restaure les onglets de la précédente. La deuxiÚme instance et les instances ultérieures ne restaurent pas les onglets, mais peuvent ajouter de nouveaux onglets. De cette façon, aucun contenu d'onglet n'est perdu. Si vous quittez 3 instances avec, disons, 2 onglets, la prochaine instance démarrée devrait restaurer 6 onglets. Ou, si 1 des 3 instances est toujours en cours d'exécution, 4 onglets sont restaurés.

Cela ne semble restaurer que le premier onglet pour moi atm

Edit : il semble que la fonction de restauration des onglets doive ĂȘtre dĂ©calĂ©e de 1 lors de la restauration ? Je quitte avec 4 onglets de requĂȘte ouverts (non enregistrĂ©s), puis redĂ©marre HeidiSQL, et je rĂ©cupĂšre 3 onglets de requĂȘte

... puis aprĂšs avoir rĂ©essayĂ© aprĂšs avoir tapĂ© ceci, il se restaure automatiquement de maniĂšre cohĂ©rente. Je ne vais pas supprimer ce commentaire moi-mĂȘme juste au cas oĂč cela nĂ©cessiterait d'ĂȘtre examinĂ©

Je viens de tester avec une configuration vierge et la derniÚre version. Je peux reproduire cela si je ferme trÚs rapidement HeidSQL, avant que le minuteur de 10 secondes pour stocker la configuration de l'onglet n'ait atteint sa premiÚre fin. Je pense donc que l'appel de MainForm.StoreTabs lors de la fermeture de HeidiSQL n'est pas déclenché pour une raison quelconque.

=> fixe

La prochaine construction nocturne devrait fonctionner de maniĂšre stable avec plusieurs instances HeidiSQL, chacune d'entre elles gĂ©rant sa propre configuration d'onglet, Ă©crivant dans le mĂȘme fichier tabs.ini. Les onglets sont restaurĂ©s si aucune autre instance en cours d'exĂ©cution ne les utilise.

D'autres problÚmes ici ? Merci de signaler si vous en trouvez un.

Quelle formidable amélioration dans mon travail quotidien ! Merci d'avoir pris le temps de mettre cela en place !

Je ferme ce sujet maintenant, car il n'y a pas de plaintes depuis quelques jours, et je ne trouve Ă©galement rien Ă  changer. Veuillez crier si vous trouvez plus de problĂšmes.

Je pense que c'Ă©tait une grande amĂ©lioration, mais je pense que la norme avec d'autres applications (par exemple Notepad ++) est que lorsque l'utilisateur ferme manuellement une fenĂȘtre, il lui demande toujours confirmation pour enregistrer ou non le contenu. Ce n'est que lorsque le programme est fermĂ© (par exemple lorsqu'il est mis Ă  niveau vers une nouvelle version) que la sauvegarde automatique s'applique.

Je suis d'accord avec @igitur , c'est un bug lié à ce changement. Les onglets doivent toujours demander si l'utilisateur les ferme dans l'application

Oui, lorsque vous fermez un onglet, il devrait vous le demander. Mais c'est le cas, du moins si vous n'avez pas désactivé cette invite :

grafik

N'est-ce pas intuitif en quelque sorte ? Ou peut-ĂȘtre parce que l'utilisateur a tendance Ă  dĂ©sactiver l'option ?

grafik

Ah, alors j'ai mal compris cette question. J'ai supposé que cela signifiait spécifiquement "Continuer à poser cette question" lors de la fermeture des fichiers en bloc (par exemple lors de la fermeture/mise à niveau de l'application).

J'ai cochĂ© cette case et mon application ne m'invite pas lorsque je ferme un onglet. J'ai peut-ĂȘtre dĂ©cochĂ© Keep asking this question dans le passĂ©, mais cela devrait simplement mettre Ă  jour Prompt to save modified files on tab close , oui ?

Edit : Non, vous avez raison, ce sont mes paramÚtres !

Encore un problĂšme, dĂ©crit dans le forum : les fichiers physiquement existants chargĂ©s dans un onglet sont restaurĂ©s mĂȘme lorsque l'utilisateur les a fermĂ©s lors de la session prĂ©cĂ©dente.

Je viens de corriger cela pour la prochaine version. Les onglets fermĂ©s avec des fichiers chargĂ©s manuellement ne devraient plus ĂȘtre restaurĂ©s lors de la prochaine session.

Peut confirmer le correctif dans la version 10.1.0.5585.

Les paramĂštres liĂ©s doivent-ils Ă©galement ĂȘtre restaurĂ©s ?

Ils ne le sont pas actuellement, mais je suppose qu'ils devraient l'ĂȘtre, n'est-ce pas ? Mais veuillez dĂ©poser un autre problĂšme pour rĂ©soudre ce problĂšme.

Cette page vous a été utile?
0 / 5 - 0 notes