【发布时间】:2024-05-18 07:20:02
【问题描述】:
我尝试将主键大小或其他字段从 int 更改为 bigint。
MySQL 手册告诉我这种类型的转换可用(从 int 到 bigint),但我的副本出错:
Column 1 of table 'Items' cannot be converted from type 'int' to type 'bigint(20)'
作为示例主表
create table Items(
id int auto_increment,
quantity int null
)
副本表
create table Items(
id int auto_increment,
quantity bigint(20) null
)
MySQL 版本 8.0.15
当副本在主服务器上的类型为 bigint 而不是 int 时,为什么 MySQL 会中断复制?
【问题讨论】:
-
我在没有 AWS RDS 的情况下在我的数据库上尝试了这个案例。结果相同。
-
这取决于您拥有的 slave_type_conversions 模式。
-
有一种方法可以完成这项工作,但应该很少需要。为什么副本与主副本不完全匹配?
-
@Michael-sqlbot 在不停机的情况下执行 DDL。 1)我将副本设为可写 2)执行迁移 3)将副本传播到主服务器(这是 aws rds 功能)
-
是的,这是一个有效的案例。一定要让复制品在升级前赶上来。
标签: mysql amazon-web-services amazon-rds database-replication mysql-8.0