Sco*_*oks 3 mysql replication utf-8
我有一个相当大的数据库,我试图将其从字符集和排序规则转换latin1/latin1_swedish_ci为utf8mb4/utf8mb4_unicode_ci. 我希望设置复制到从站,运行转换,然后在完成后提升从站以避免停机。
我注意到在运行查询时...
ALTER TABLE `sometable` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)
... MySQL的自动转换text到mediumtext或mediumtext以longtext等
有没有办法关闭这个功能?MySQL有这个特性很好,但问题是它破坏了复制,因为slave上的表结构与master不同。
如ALTER TABLE语法下所述:
对于数据类型为
VARCHAR或其中一种的列TEXT,CONVERT TO CHARACTER SET将根据需要更改数据类型,以确保新列的长度足以存储与原始列一样多的字符。例如,一TEXT列有两个长度字节,用于存储列中值的字节长度,最大为 65,535。对于一latin1TEXT列,每个字符需要一个字节,因此该列最多可以存储 65,535 个字符。如果将列转换为utf8,则每个字符最多可能需要三个字节,最大可能长度为 3 × 65,535 = 196,605 个字节。该长度不适合TEXT列的长度字节,因此 MySQL 会将数据类型转换为MEDIUMTEXT,这是长度字节可以记录值 196,605 的最小字符串类型。同样,VARCHAR列可能会转换为MEDIUMTEXT.为避免刚刚描述的类型的数据类型更改,请勿使用
CONVERT TO CHARACTER SET. 相反,用于MODIFY更改单个列。例如:Run Code Online (Sandbox Code Playgroud)ALTER TABLE t MODIFY latin1_text_col TEXT CHARACTER SET utf8; ALTER TABLE t MODIFY latin1_varchar_col VARCHAR(M) CHARACTER SET utf8;
| 归档时间: |
|
| 查看次数: |
3374 次 |
| 最近记录: |