J'ai une table avec des fournisseurs qui a la structure suivante:la restauration des données PHP dans le cas de la migration a échoué
attention au champ fournisseur. C'est un VARCHAR
maintenant. Je dois supporter ce système à partir d'un autre développeur et maintenant nous devons avoir la liste des fournisseurs et stocker des informations supplémentaires, donc j'ai créé une autre table pour stocker les fournisseurs en réalité.
Il a la structure suivante: id, le nom, la marge, outer_name, etc.
Je prévois de changer le type de fournisseur à INT(32)
et il pointera vers le tableau des fournisseurs.
Le problème est que MySQL ne supporte pas les transactions pour changer la structure de la base de données.
Si je change de type de champ de chaîne en entier, toutes les données précédentes sont perdues. SI quelque chose ne va pas au milieu. Je suis perdu.
Serait-il correct d'exporter des données vers un fichier en utilisant la sérialisation et de les lire à partir de là?
Y a-t-il de meilleures façons de le faire?
méthode la plus sûre: mysqldump pour classer, éditer le fichier pour changer la définition du champ, sauvegarder pour séparer le fichier dump. charger le vidage modfied, et si quelque chose explose, vous avez la vidage d'origine comme solution de repli. –
Pourriez-vous ajouter un champ supplémentaire, par exemple provider_id, qui fait référence à votre nouvelle structure de table, effectuer votre migration et exécuter les deux systèmes côte à côte. Une fois que vous êtes satisfait, il n'y a pas de problèmes (les entrées ont peut-être une valeur dans les deux champs?) Supprimez ou videz l'ancien champ 'provider'. – Graeme
Graeme, ressemble à la solution la plus facile pour moi. Pas besoin de créer une nouvelle table. Probablement il serait nécessaire de créer une nouvelle table pour des situations plus complexes mais exactement dans ce cas je ne vois aucune nécessité. Si vous postez comme réponse, je l'accepterai – Tebe