5
の名前を変更し、私はすべてのテーブルを変更するスクリプトを作りましたMySQLエラー150私は今、私はUTF8で全体デシベルを変更しようとしている</p> <p>をlatin1のためにcolumns'charsetと古いデータベースをしました
ALTER TABLE `mytable` CHARACTER SET utf8;
と、このようなすべての列:
ALTER TABLE `mytable` CHANGE `mycolumn` `mycolumn` varchar(200) CHARACTER SET utf8;
しかし、いくつかの列に(主キー制約と、私は推測する)私はこのエラーを取得しています:
01このようなUTFError on rename of './test/#sql-5028_217b96' to './test/mytable' (errno: 150)
誰もがこの問題を回避する方法を知っていますか?
私はちょうど同様の問題に直面しました( 'INT'から' BIGINT'へ)。私はテーブル(それは私が変更する必要がある列の外来キーの制約を持っていた)とその内容を複製することを決定し、問題のない重複テーブルの列タイプを変更し、元のテーブルを重複テーブルに置き換えました。それは危険なことですか? – tylerl
@tylerl元の表のデータが変更中に変更されない場合は、いいえ。それ以外の場合は、データの損失/矛盾が発生する可能性があります。 –
ええ、私はそれが私のアプリで物事を壊したと思う...何かは、テーブルが重複したときに右にコピーしていない必要があります(私はMacでSequel Proを使用しています)?私はデータが失われたとは思わないが、突然私のサーバーは特定のテーブルにデータを保存する気がしなかった!奇妙な...問題は、問題のフィールドが特定のテーブルの外部キーであることに注意しましたが、私はFK制約を見つけることができません! Grrrr .... – tylerl