| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- -- =============================================================================
- -- 可执行日计划列表:统一涉及表的字符串列为 utf8mb4_general_ci
- -- 错误示例:Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_0900_ai_ci,IMPLICIT)
- -- =============================================================================
- -- 使用前:
- -- 1. 备份 aidopdev(或当前库名)
- -- 2. 将下方 USE 中的库名改为实际库名
- -- 3. 优先执行「方式一」生成语句,在测试环境验证后再在生产执行
- -- =============================================================================
- USE aidopdev;
- -- -----------------------------------------------------------------------------
- -- 方式一(推荐):按当前列类型生成 MODIFY,仅处理非 utf8mb4_general_ci 的字符串列
- -- 在 MySQL 客户端执行本段查询,复制结果列 stmt 中的 SQL 逐条执行(或导出后执行)
- -- 注意:未附带 DEFAULT/ON UPDATE,若列有默认值或生成列,请在生成结果上手工补全后再执行
- -- -----------------------------------------------------------------------------
- SELECT CONCAT(
- 'ALTER TABLE `', TABLE_NAME, '` MODIFY COLUMN `', COLUMN_NAME, '` ', COLUMN_TYPE,
- ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci',
- IF(IS_NULLABLE = 'YES', ' NULL', ' NOT NULL'),
- ';'
- ) AS stmt
- FROM INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_SCHEMA = DATABASE()
- AND TABLE_NAME IN (
- 'PeriodSequenceDet',
- 'LineMaster',
- 'ItemMaster',
- 'WorkOrdMaster',
- 'WorkOrdRouting',
- 'mes_morder',
- 'ProdLineDetail',
- 'ScheduleResultOpMaster',
- 'WorkCtrMaster',
- 'EquipmentList'
- )
- AND DATA_TYPE IN ('varchar', 'char', 'text', 'mediumtext', 'longtext')
- AND COLLATION_NAME IS NOT NULL
- AND COLLATION_NAME <> 'utf8mb4_general_ci'
- ORDER BY TABLE_NAME, ORDINAL_POSITION;
- -- -----------------------------------------------------------------------------
- -- 方式二(可选):若某表不在 information_schema 或生成语句执行失败,
- -- 可对照业务实体手工执行下面示例(长度请按你库中 SHOW CREATE TABLE 调整)
- -- -----------------------------------------------------------------------------
- /*
- ALTER TABLE PeriodSequenceDet
- MODIFY `Domain` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Site` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `ItemNum` VARCHAR(30) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Line` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Op` VARCHAR(6) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `WorkCtr` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Period` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `WorkOrds` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Status` VARCHAR(32) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Employee` VARCHAR(128) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `MoldNum` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `UChar1` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `UChar2` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `CreateUser` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `UpdateUser` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- ALTER TABLE ScheduleResultOpMaster
- MODIFY `Domain` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `WorkOrd` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `WorkCtr` VARCHAR(8) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Line` VARCHAR(500) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `ItemNum` VARCHAR(30) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Op` VARCHAR(6) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `OpDescr` VARCHAR(256) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `InternalEquipmentCode` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `OccupyInternalEquipmentCode` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `MoldTypeCode` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `AssignedEmployeeID` VARCHAR(128) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `SkillNo` VARCHAR(64) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci,
- MODIFY `Remark` VARCHAR(512) NULL CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- */
- -- 验证(执行修复后应无 unicode_ci / 0900_ai_ci)
- SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME
- FROM INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_SCHEMA = DATABASE()
- AND TABLE_NAME IN (
- 'PeriodSequenceDet', 'LineMaster', 'ItemMaster', 'WorkOrdMaster', 'WorkOrdRouting',
- 'mes_morder', 'ProdLineDetail', 'ScheduleResultOpMaster', 'WorkCtrMaster', 'EquipmentList'
- )
- AND COLLATION_NAME IS NOT NULL
- ORDER BY TABLE_NAME, COLUMN_NAME;
|