Question

Je vais avoir des problèmes réimportation une décharge de base faite par mysqldump. J'ai couru mysqldump avec l'option ordre par primaire, et je devais courir sur une table avec une clé unique (et pas de clé primaire explicite, donc il trié par cette clé unique). Mon objectif dans ce cas est de recréer la table, ce qui rend la clé unique dans la clé primaire.

Cette décharge a pris un temps très long (environ 10 jours) et ce serait une grande douleur dans le cul pour l'exécuter à nouveau. J'ai essayé réimporter la décharge (avec les changements de schéma appropriés), mais mysql étranglée à mi-chemin. Je regardais dans le dumpfile, à l'endroit où il étouffait - et il ressemble à quelqu'un inséré un e-mail de spam à droite dans le texte de la dumpfile.

Heureusement, il semble que le dommage a été isolé, je suis en mesure de voir le bouton droit avant la poubelle, et juste après.

tl; dr : si je viens épissé les ordures, je ne sais pas combien de clés seront manquantes entre un avant et un après - la décharge est trié par cette clé unique, donc il rend la vie plus facile à cet égard. Est-ce que MySQL ont un moyen de récupérer toutes les lignes entre deux entrées dans un index?

La clé est une chaîne hexadécimale de 32 caractères, mémorisée dans une colonne de type CHAR (32). Je suis sûr que je ne peux pas utiliser les les opérateurs sur les chaînes ... donc des suggestions?

Était-ce utile?

La solution

Tri de la mysqldump sur la clé primaire (ou clé unique) est ce qui a pris si longtemps. Dix jours est assez incroyable, cependant.

Faire une sorte comme celui-ci est utile que si vous souhaitez sauvegarder une table MyISAM et de restaurer à une table InnoDB. Est-ce que vous faites?

MySQL ne certainement un moyen de vider les sous-ensembles d'une table. Consultez l'option --where de mysqldump. Cela devrait vous permettre de sauvegarder les lignes qui a été corrompu.

Et oui, vous pouvez utiliser < et > sur les chaînes dans SQL. Vous pouvez également utiliser le prédicat BETWEEN.

Autres conseils

Ma première question serait, comment un courrier Spam faire dans votre base de données et vidage de la détruire?

Je suppose qu'il vient de sortir d'une de vos colonnes de données, non? Pouvez-vous montrer comment cette E-Mail et comment il a réussi à perturber la structure de votre décharge?

Peut-être était une sorte d'injection d'en-tête qui a provoqué la décharge d'insérer des sauts de ligne où est ne devrait pas avoir, je ne sais pas. Quoi qu'il en soit, avoir éclairci ce point serait la première priorité à mon avis.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top