我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何用pt-online-schema-change在线修改表字段长度

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何用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)即为我们想要的结果。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何用pt-online-schema-change在线修改表字段长度

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle表字段长度如何修改

要修改Oracle表中字段的长度,可以使用ALTER TABLE语句。例如,要将一个名为column_name的字段的长度修改为50个字符,可以执行以下语句:ALTER TABLE table_nameMODIFY column_na
oracle表字段长度如何修改
2024-04-09

sql如何修改表字段长度

要修改表字段的长度,可以使用ALTER TABLE语句,然后使用MODIFY COLUMN来修改字段的长度。以下是一个示例:ALTER TABLE 表名MODIFY COLUMN 字段名 字段类型(新长度);例如,如果要将表中的字段va
sql如何修改表字段长度
2024-05-14

oracle如何修改表结构字段长度

要修改表结构字段长度,可以使用ALTER TABLE语句来实现。例如,如果要将表名为example_table的字段名为example_column的长度修改为50个字符,可以使用以下SQL语句:ALTER TABLE example_
oracle如何修改表结构字段长度
2024-04-09

oracle如何修改表字段类型和长度

要修改Oracle表字段的类型和长度,可以使用ALTER TABLE语句。以下是修改表字段类型和长度的示例:修改字段类型:ALTER TABLE table_nameMODIFY column_name new_data_type;例如,
oracle如何修改表字段类型和长度
2024-04-15

如何使用sql语句 修改MySQL表格的字段长度

序言:MySQL是一种管理大量数据的关系型数据库管理系统。在MySQL中,表格的字段长度在表格被建立后是不可修改的,但是,可以通过一些操作在不改变数据的情况下修改字段长度。本文将提供一些有用的方法来修改MySQL表格的字段长度。 方法一:修
如何使用sql语句 修改MySQL表格的字段长度
2023-12-23

编程热搜

目录