我正在嘗試將我的 Id 列型別從 int 更改為 bigInt,因為記錄太大,如果我嘗試存盤更多記錄,我會收到錯誤,但我不確定像這樣更改表是否安全:
alter table the_table
alter the_column type bigint;
我正在使用 Java Springboot 創建物體并使用 Hibernate 進行持久性。由于資料庫中有非常重要的記錄,因此以安全的方式解決此問題的最佳方法是什么?
uj5u.com熱心網友回復:
為什么你不能這樣做?
ALTER TABLE tableName ALTER COLUMN ID bigint
我想先在測驗環境中嘗試一下,但這總是對我有用
uj5u.com熱心網友回復:
MySQL 的正確 SQL 代碼是:
ALTER TABLE the_table MODIFY COLUMN the_column BIGINT;
大表需要一些時間(因為它需要復制資料);如果你想讓它在桌面上不中斷,你可以嘗試使用pt-online-schema-changepercona 工具中的命令(https://www.percona.com/doc/percona-toolkit/3.0/pt-online-schema-change.html ) 或者如果您想更安全地執行此操作(但資料中斷)
RENAME TABLE the_table TO the_table_old
CREATE TABLE the_table LIKE the_table_old
REPLACE INTO the_table select * from the_table_old limit 0,1000
REPLACE INTO the_table select * from the_table_old limit 1000,1000
REPLACE INTO the_table select * from the_table_old limit 2000,1000
DROP TABLE the_table_old
但是回答你的問題 - 這是在桌子上進行更改的安全方法;它可能需要一些時間,如果您只運行 alter table,該表將被鎖定以進行更新/插入
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/475485.html
