2012-01-18 3 views
3

Voici une copie de mon erreur:MySQL alter génération de table « erreur sur renommage »

mysql> ALTER TABLE Price DROP FOREIGN KEY Id 
ERROR 1025 (HY000): Error on rename of '.\testdb\Price' to '.\t 
estdb\#sql2-bcc-16' (errno: 152) 

J'ai lu this page ce qui suggère que le problème peut être dû à une table sur gauche de certaines modifier plus tôt la table erreur, et vous recommande de fouiller dans votre répertoire de données et supprimer toute table avec un nom tel que 'B-xxx.frm'.

Mon erreur est similaire à ceci, mais il n'y a pas de # # sql2-bcc-16 dans mon répertoire de données. Et il n'y aurait pas d'artefacts d'une précédente table d'échecs, de toute façon, parce que c'est juste une petite base de données de test et que je n'ai pas modifié de tables auparavant.

EDIT: Plus d'infos ci-dessous.

Ce que je veux vraiment faire est de changer un Id (clé primaire) dans une autre table pour être un SMALLINT (au lieu d'un TINYINT). Cependant, l'ID de cette table téléphonique est une clé étrangère, référençant l'ID dans l'autre table. Donc, je crois que j'ai besoin de laisser tomber la clé étrangère de cette table avant de procéder au changement de type dans la table primaire. J'espère que ceci est clair.

EDIT 2: Tables.

Vente - a Id TINYINT NOT NULL, clé primaire (Id)

Téléphone - a Id TINYINT NOT NULL, FOREIGN KEY (Id) RÉFÉRENCES Vente (Id)

Je voudrais que tous Ids dans mon base de données à être SMALLINT et non TINYINT. C'est ma situation actuelle.

+0

Le haut de mon poste ne cesse de disparaître. Il dit "Salut à tous, ..." Quelqu'un nommé "thinksteep" continue d'éditer mon post. – MitchellSalad

+0

Je crois que l'Id est la clé primaire dans une autre table ... non? –

+0

Fahim - correct! Je mettrai à jour OP avec des informations plus pertinentes. – MitchellSalad

Répondre

1

essayer avec mysql> ALTER TABLE Price DROP Id

Espérons que cela fonctionne ... Bonne chance

J'ai essayé avec vous interrogez mysql> ALTER TABLE Price DROP FOREIGN KEY Id

Il exécute, mais il n'a pas travaillé !!!

Mise à jour:

utilisation ci-dessous requêtes ...

mysql> ALTER TABLE Price MODIFY Id SMALLINT

mysql> ALTER TABLE Sale MODIFY Id SMALLINT

mysql> ALTER TABLE Phone MODIFY Id SMALLINT

+0

Je veux toujours téléphone pour avoir un champ Id, je dois juste laisser tomber temporairement le fait que l'Id est un clé étrangère. Si je laisse tomber toute la colonne, il n'y aurait aucun moyen de "ré-attacher" les Id après avoir modifié la table primaire, correct? – MitchellSalad

+0

oui ... ma prochaine question: pourquoi vous voulez laisser tomber puis ?? que veux-tu faire exactement? S'il vous plaît modifier votre question –

+0

Aussi la requête ci-dessus va supprimer la colonne Id de la table des prix ... Je crois que Phone est une autre table où Id est la clé primaire ... Pouvez-vous fournir la structure des deux tables? –

Questions connexes