【问题标题】:Percona Toolkit Online Schema Change: Possible to add multiple columns all at once?Percona Toolkit Online Schema Change:可以一次添加多个列吗?
【发布时间】:2014-05-05 19:46:18
【问题描述】:

有谁知道是否可以使用 Percona 的 pt-online-schema-change for MySQL 一次添加多个列?为了一次添加多个列,我已经尝试了所有我能想到的变体。这似乎是你应该能够做的事情,但我在网上找不到任何你可以做的证据,我也无法弄清楚语法。下面是我尝试过的一些陈述,让您了解我尝试过的内容(用户名和密码已被删除,原因很明显)

声明 1:

    pt-online-schema-change --print --progress time,5 --max-load Threads_running=1000 
--critical-load Threads_running=10000 --chunk-time 5 --set-vars "innodb_lock_wait_timeout=600" 
--nocheck-plan --execute -h webdb -u xxxx --p xxxx --alter "ADD first_seen datetime NOT NULL 
DEFAULT 0, last_seen datetime NOT NULL DEFAULT 0 AFTER days_running"  D=mydata,t=mytable

声明 2:

    pt-online-schema-change --print --progress time,5 --max-load Threads_running=1000 
--critical-load Threads_running=10000 --chunk-time 5 --set-vars "innodb_lock_wait_timeout=600" 
--nocheck-plan --execute -h webdb -u xxxx --p xxxx --alter "ADD first_seen datetime NOT NULL 
DEFAULT 0, ADD last_seen datetime NOT NULL DEFAULT 0 AFTER days_running"  D=mydata,t=mytable

声明 3:

 pt-online-schema-change --print --progress time,5 --max-load Threads_running=1000 
--critical-load Threads_running=10000 --chunk-time 5 --set-vars "innodb_lock_wait_timeout=600" 
--nocheck-plan --execute -h webdb -u xxxx --p xxxx --alter "ADD first_seen datetime NOT NULL 
DEFAULT 0 AFTER days_running, ADD last_seen datetime NOT NULL DEFAULT 0 AFTER days_running"  
D=mydata,t=mytable

等等。基本上我已经尝试了我能想到的所有变体 ADD first_seen datetime NOT NULL DEFAULT 0, ADD last_seen datetime NOT NULL DEFAULT 0 AFTER days_running"(移动/删除之后,移动/删除ADD,移动/删除逗号等)

【问题讨论】:

    标签: mysql sql database-schema percona


    【解决方案1】:

    根据manual,这是可能的,只需用逗号分隔语句。引用手册的--alter 部分:

    --改变

    type: string
    
    The schema modification, without the ALTER TABLE keywords. You can perform 
    multiple modifications to the table by specifying them with commas. Please 
    refer to the MySQL manual for the syntax of ALTER TABLE.
    

    在您的情况下,--alter 应该可以工作(假设您的其余陈述是正确的):

    --alter "ADD first_seen datetime NOT NULL DEFAULT 0, ADD last_seen datetime NOT NULL DEFAULT 0 AFTER days_running"
    

    【讨论】:

    • 谢谢。我会再试一次....可以发誓我已经尝试过了。不管怎样,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-04-04
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-17
    • 2014-06-15
    • 2018-09-15
    • 1970-01-01
    相关资源
    最近更新 更多