如何用pt-online-schema-change在线修改表字段长度
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,pt-online-schema-change依赖条件:操作的表必须有主键,否则执行会报错实验如下:MySQL [mysql]> create database chenfeng;Query OK,
千家信息网最后更新 2026年11月01日如何用pt-online-schema-change在线修改表字段长度pt-online-schema-change依赖条件:
操作的表必须有主键,否则执行会报错
实验如下:
MySQL [mysql]> create database chenfeng;
Query OK, 1 row affected (0.00 sec)
MySQL [mysql]> use chenfeng;
Database changed
创建带有主键的表test:
MySQL [chenfeng]> create table test
-> (id int(10) not null auto_increment,
-> k int(10) not null default '0',
-> c char(120) not null default '',
-> primary key(id))
-> engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.03 sec)
MySQL [chenfeng]> desc test;
+-------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| k | int(10) | NO | | 0 | |
| c | char(120) | NO | | | |
+-------+-----------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
MySQL [chenfeng]>
MySQL [chenfeng]> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`k` int(10) NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
[root@chenfeng ~]# pt-online-schema-change --alter="modify c varchar(150) not null default ''" --user=root --password=123456 D=chenfeng,t=test --charset=utf8 --execute
No slaves found. See --recursion-method if host chenfeng has slaves.
Not checking slave lag because no slaves were found and --check-slave-lag was not specified.
Operation, tries, wait:
analyze_table, 10, 1
copy_rows, 10, 0.25
create_triggers, 10, 1
drop_triggers, 10, 1
swap_tables, 10, 1
update_foreign_keys, 10, 1
Altering `chenfeng`.`test`...
Creating new table...
Created new table chenfeng._test_new OK.
Altering new table...
Altered `chenfeng`.`_test_new` OK.
2016-10-07T18:57:36 Creating triggers...
2016-10-07T18:57:36 Created triggers OK.
2016-10-07T18:57:36 Copying approximately 1 rows...
2016-10-07T18:57:36 Copied rows OK.
2016-10-07T18:57:36 Analyzing new table...
2016-10-07T18:57:36 Swapping tables...
2016-10-07T18:57:36 Swapped original and new tables OK.
2016-10-07T18:57:36 Dropping old table...
2016-10-07T18:57:36 Dropped old table `chenfeng`.`_test_old` OK.
2016-10-07T18:57:36 Dropping triggers...
2016-10-07T18:57:36 Dropped triggers OK.
Successfully altered `chenfeng`.`test`.
[root@chenfeng ~]#
MySQL [(none)]> use chenfeng
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [chenfeng]> show tables;
+-----------------+
| Tables_in_chenfeng |
+-----------------+
| test |
+-----------------+
1 row in set (0.00 sec)
MySQL [chenfeng]> desc test;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| k | int(10) | NO | | 0 | |
| c | varchar(150) | NO | | | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
varchar(150)即为我们想要的结果。
操作的表必须有主键,否则执行会报错
实验如下:
MySQL [mysql]> create database chenfeng;
Query OK, 1 row affected (0.00 sec)
MySQL [mysql]> use chenfeng;
Database changed
创建带有主键的表test:
MySQL [chenfeng]> create table test
-> (id int(10) not null auto_increment,
-> k int(10) not null default '0',
-> c char(120) not null default '',
-> primary key(id))
-> engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.03 sec)
MySQL [chenfeng]> desc test;
+-------+-----------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-----------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| k | int(10) | NO | | 0 | |
| c | char(120) | NO | | | |
+-------+-----------+------+-----+---------+----------------+
3 rows in set (0.01 sec)
MySQL [chenfeng]>
MySQL [chenfeng]> show create table test\G
*************************** 1. row ***************************
Table: test
Create Table: CREATE TABLE `test` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`k` int(10) NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
[root@chenfeng ~]# pt-online-schema-change --alter="modify c varchar(150) not null default ''" --user=root --password=123456 D=chenfeng,t=test --charset=utf8 --execute
No slaves found. See --recursion-method if host chenfeng has slaves.
Not checking slave lag because no slaves were found and --check-slave-lag was not specified.
Operation, tries, wait:
analyze_table, 10, 1
copy_rows, 10, 0.25
create_triggers, 10, 1
drop_triggers, 10, 1
swap_tables, 10, 1
update_foreign_keys, 10, 1
Altering `chenfeng`.`test`...
Creating new table...
Created new table chenfeng._test_new OK.
Altering new table...
Altered `chenfeng`.`_test_new` OK.
2016-10-07T18:57:36 Creating triggers...
2016-10-07T18:57:36 Created triggers OK.
2016-10-07T18:57:36 Copying approximately 1 rows...
2016-10-07T18:57:36 Copied rows OK.
2016-10-07T18:57:36 Analyzing new table...
2016-10-07T18:57:36 Swapping tables...
2016-10-07T18:57:36 Swapped original and new tables OK.
2016-10-07T18:57:36 Dropping old table...
2016-10-07T18:57:36 Dropped old table `chenfeng`.`_test_old` OK.
2016-10-07T18:57:36 Dropping triggers...
2016-10-07T18:57:36 Dropped triggers OK.
Successfully altered `chenfeng`.`test`.
[root@chenfeng ~]#
MySQL [(none)]> use chenfeng
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [chenfeng]> show tables;
+-----------------+
| Tables_in_chenfeng |
+-----------------+
| test |
+-----------------+
1 row in set (0.00 sec)
MySQL [chenfeng]> desc test;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(10) | NO | PRI | NULL | auto_increment |
| k | int(10) | NO | | 0 | |
| c | varchar(150) | NO | | | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
varchar(150)即为我们想要的结果。
条件
结果
会报
实验
字段
长度
在线
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
百单网互联网科技有限公司
华服互联网科技靠谱吗
新华互联网科技学校
鸠鸠互联网科技
智能科技公司是互联网公司吗
互联网与科技金融数据
中资互联网科技
深圳科技互联网
互联网科技股票
奔汉互联网科技
国外互联网科技网站
太原新华互联网科技学校怎么样
常德市电业局互联网科技部
厦门千工互联网科技有限公司
深圳市罗太互联网科技有限公司
滨湖区互联网智能科技产品有哪些
浙南科技城互联网大厦招聘
艺电能源互联网科技有限公司招聘
众联互联网络科技
瑞安市蟠桃会互联网科技有限公司
互联网与科技
互联网金融公司科技
有马互联网科技
互联网 的科技创新
富国互联网科技创新基金
浙南科技城互联网大厦建设工程
佛山市翊博互联网络科技有限公司
山东子淼互联网科技有限公司
伍佰万互联网科技怎么赚钱
互联网的黑科技实验室