我目前正在嘗試添加一列到約25m行的表。我需要接近零的停機時間,所以希望使用在線DDL。它運行了一段時間,但最終跑進問題:MySQL添加列與在線DDL
"Duplicate entry '1234' for key 'PRIMARY'"
[SQL: u'ALTER TABLE my_table ADD COLUMN my_coumn BOOL NOT NULL DEFAULT false']
我認爲這正在發生的事情,因爲我正在對錶INSERT ... ON DUPLICATE KEY UPDATE ...
業務運行操作一段時間。這似乎是一個known limitation。
在此之後沒有工作,我嘗試使用Percona的pt-online-schema-change
工具,但不幸的是,因爲我的表已生成列,沒有工作,要麼錯誤:
The value specified for generated column 'my_generated_column' in table '_my_table_new' is not allowed.
所以,我現在處於虧損狀態。我可以在不阻止DML操作的情況下添加列的其他選項是什麼?
我倒下了,因爲我不認爲你看了這個問題。錯誤是關於重複的條目,並且與可爲空的任何內容無關。這個問題也明確說我嘗試使用'pt-online-schema-change'(Percona),你推薦我使用它。 – Eli
您的具體問題是'我的其他選擇是否添加列而不阻止DML操作?',並且提供的要求是'我需要接近0的停機時間,所以希望使用在線DDL'。 。這是我試圖回答沒有任何詳細的DDL。我所提供的是我過去使用的一種方法,用於限制添加到活動表的列的影響。如果你想要我的進一步反饋,然後發送具體的ddl和表定義。我也只是提到Percona工具是專門爲這個問題製作的。分享您使用它的方式以及您收到的錯誤。 – Dom
你還沒有看到這個問題。你所做的每一點或者與問題無關,或者在問題中作出迴應。我不想在這裏粗魯。我真的不知道還有什麼要告訴你。 – Eli