Percona 修改 table 以允许空值

Percona modify table to allow nulls

如何使用 percona 修改 table 以允许空值。

pt-online-schema-change --modfiy mycolumn default null d=database, t=table

我看到 --alter 但没有修改现有列的内容。

首先,您不必使用 pt-online-schema-change 来实现此目的,因为您可以在本机中做到这一点 SQL(尽管您可能有理由询问如何做它与 pt-online-schema-change)

为此table:

DROP DATABASE IF EXISTS test;
CREATE DATABASE test;
USE test;

CREATE TABLE t1 (
    id   INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(40)
) ENGINE=InnoDB;

你可以使用这个 SQL:

ALTER TABLE `test`.`t1` CHANGE COLUMN name name VARCHAR(40) NULL;

但是,接下来,如果您有充分的理由使用 pt-online-schema-change,例如,如果 table 非常大,那么语法如下:

pt-online-schema-change h=127.0.0.1,P=3306,u=user,p=password,D=test,t=t1 --alter "CHANGE COLUMN name name VARCHAR(40) NULL" --execute

这是工具文档的 link https://www.percona.com/doc/percona-toolkit/LATEST/pt-online-schema-change.html