答えて
残念ながら、MySQLには完全なテーブルコピーを実行する必要があります(ALTER TABLE ... CHANGE COLUMN
)。
チェックアウトpt-online-schema-change。これは、ALTERの期間中にテーブル全体をロックせずに、テーブルに対して多くのタイプのALTER変更を行うのに役立ちます。新しいテーブルにデータをコピーしている間は、元のテーブルを読み書きすることができます。変更はキャプチャされ、トリガを介して新しいテーブルに適用されます。
例:
pt-online-schema-change h=localhost,D=databasename,t=tablename \
--alter 'CHANGE COLUMN oldname newname NUMERIC(9,2) NOT NULL'
更新:のMySQL 5.6がテーブルを再構築し、列の名前を変更することなく、ALTER操作のいくつかの種類を行うことができますが、オンラインでの変化としてサポートされているものの一つであります。どのタイプの変更がこれをサポートするかどうかの概要については、http://dev.mysql.com/doc/refman/5.6/en/innodb-create-index-overview.htmlを参照してください。
制約がない場合は、私が知る限り、それを変更することができます。最初に制約を削除する必要がある場合は、制約を変更して追加し直してください。
多くの行を含む表を変更すると、時間がかかることがあります(ただし、関連する列が索引付けされていない場合はそれほど簡単ではありません)。
あなたが特にその目的のために特別に作成さALTER TABLE構文を使用しないようにしたい場合、あなたは常に、ほぼ正確に同じ構造(ただし、別の名前)を持つテーブルを作成することができますし、のようなので、そこにすべてのデータをコピーします。
CREATE TABLE `your_table2` ...;
-- (using the query from SHOW CREATE TABLE `your_table`,
-- but modified with your new column changes)
LOCK TABLES `your_table` WRITE;
INSERT INTO `your_table2` SELECT * FROM `your_table`;
RENAME TABLE `your_table` TO `your_table_old`, `your_table2` TO `your_table`;
一部のALTER TABLEクエリでは、上記はかなり速くなる可能性があります。しかし、簡単な列名の変更のために、それは簡単かもしれません。私は同じテーブルを作成し、それを実際に見ている時間を確認するために変更を実行する可能性があります。
- 1. テーブルを再作成せずに名前を変更する方法
- 2. ko.mapping.fromJSオブジェクトを再作成せずに変更する
- 3. サービスを中断せずにテーブルの名前を変更/再作成する方法
- 4. テーブル名とカラム名を指定せずにMysqlのすべてのテーブルの値を検索するには?
- 5. エンティティのスキーマ名を削除および再作成せずに変更
- 6. 電子変更ウィンドウを再作成せずにオプション
- 7. Clickhouseのテーブルのカラム名を変更
- 8. 別のテーブルを作成せずにテーブルを作成する
- 9. 角2/4:コンポーネントを再作成せずにルートを変更する方法
- 10. 他のテーブルに基づいてカラムを作成するMySQLクエリ
- 11. テーブル(テーブル名)にはカラム名(カラム名)はありません
- 12. ポストグルでテーブルのカラム名を大文字に変更する
- 13. Box2D |治具を破壊/再作成せずにサイズを変更しますか?
- 14. ウィンドウを再作成せずに電子ブラウザウィンドウのオプションを変更しますか?
- 15. ホイールを再作成せずにカレンダーを作成する
- 16. php MySqlテーブルをテーブルに結合する名前が一致するTable.Bカラム名
- 17. カラム名をブランクに変更するSELECT
- 18. Db:migrateはエラーを生成せず、データベース(MYSQL)にテーブルを作成しません
- 19. javascriptのスタイルを変更せずにクラス名を変更する
- 20. デフォルトフォントを変更せずにフォント名を変更するpython
- 21. テーブルを再作成せずに別のテーブルから継承させるためにテーブルのスキーマを変更する
- 22. コピーを作成せずにNSUserDefaultsのオブジェクトを変更する
- 23. JSONデータを変更せずにジェネリックJavaクラスを作成する
- 24. 新しいビットマップを作成せずにビットマップサイズを変更する
- 25. UIViewsを変更せずにトランジションアニメーションを作成する方法
- 26. オカレンスを変更せずにパッチのクラスタを作成する
- 27. MySQLのカラム変数テーブル
- 28. SQL Developerがテーブル名とカラム名を大文字に変更する
- 29. ffplay - 再エンコードせずに再生速度を変更する
- 30. テーブルを変更せずにドラッグ&ドロップQTableWidget
ただ、ALTERの構文を見てください。 –