5

'charsetからlatin1までの列を持つ古いデータベースがあります

今、私はutf8のdb全体を変更しようとしています。次のように、utf8のすべてのテーブルを変更するスクリプトを作成しました。

ALTER TABLE `mytable` CHARACTER SET utf8;

そしてこのようなすべての列:

ALTER TABLE `mytable` CHANGE `mycolumn` `mycolumn` varchar(200) CHARACTER SET utf8;

しかし、一部の列(主キーと制約)では、次のエラーが発生します。

Error on rename of './test/#sql-5028_217b96' to './test/mytable' (errno: 150)

誰もがこれを回避する方法を知っていますか?

4

1 に答える 1

9

ほとんどの場合、あなたmycolumnは外部キーの一部です。その場合は、制約を削除してから、主キーと外部キーの両方のタイプを変更してから、制約を再度追加する必要があります。

于 2012-10-01T12:56:45.290 に答える