如何用pt-online-schema-change在线修改表字段长度
发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,pt-online-schema-change依赖条件:操作的表必须有主键,否则执行会报错实验如下:MySQL [mysql]> create database chenfeng;Query OK,
千家信息网最后更新 2025年11月18日如何用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安全错误
数据库的锁怎样保障安全
三十六计 选服务器
ps4连ea服务器
黑豆互联网科技有限公司
盘山民宿软件开发
中专计算机网络技术专业
淘宝客后台服务器在哪里
网络安全书签图片
怎么调节服务器风扇转速
软件开发培训班怎么找工作
2021年优秀网络安全解决方案
襄阳哪个软件开发最好
服务器购买合法吗
软件开发工程师供需情况
计算机网络技术应用简答题
未成年人网络安全问题有哪些
网络安全需要分析报告
杭州互联网科技成果展示馆
网络安全测试在厂培训招生
数据通信与网络技术问题
互联网软件开发书籍
p2p分布式数据库缺陷
查找一个数据库
是所辖业务网络安全保障
软件开发税种
复旦大学教授谈网络安全
公安局开展网络安全宣讲
哈尔滨万通软件开发
华为服务器管理口直连线交叉线
鄂尔多斯市文艺家数据库
雅马哈里的数据库怎样删除