00_create_database.sql 2.07 KB
-- =====================================================================
-- 停车云平台(parking-cloud)数据库初始化脚本
-- =====================================================================
-- 说明:
--   1. 停车侧原有六个库(zt_sys / zt_park / zt_pay / zt_order / zt_bill / zt_charge)
--      在本轮重构中【合并为一个库】parking_cloud,靠表名前缀 sys_ / park_ / pay_ /
--      order_ / bill_ / charge_ 区分归属模块。
--   2. 表结构本轮【不做任何变更】:只做「把六个库的表搬到一起」,字段级别的规范化留到二期。
--      因此本脚本只建库,不建表;表由 P2 的合并迁移脚本 doc/sql/migration/ 灌入。
--   3. 政务平台(ZTEITS-PTMS)的库【保持独立】,P6 通过单 Jar 多数据源接入,
--      不并入 parking_cloud(政务数据需独立备份与审计)。
--
-- 执行:mysql -uroot < 00_create_database.sql
-- =====================================================================

CREATE DATABASE IF NOT EXISTS `parking_cloud`
    DEFAULT CHARACTER SET utf8mb4
    DEFAULT COLLATE utf8mb4_general_ci;

-- ⚠️ 上面这条在库**已存在**时是空操作(IF NOT EXISTS),**不会**修正已存在的库的排序规则。
-- 本地镜像就栽在这里:库先被手工建出来(跟着服务端默认 utf8mb4_0900_ai_ci),
-- 之后 00 再跑也改不动它,于是 01 建的 13 张表全落在 0900 上,与 03 的存量表(写死
-- general_ci)在同一个库里混成两种排序规则。下面这条 ALTER 把建库变成**幂等且自纠**的。
-- 实测:MySQL 8.0 的 utf8mb4 默认排序规则是 0900_ai_ci、5.7 是 general_ci——
-- 不写死就会"同一套脚本在不同目标机上建出不同排序规则"。
ALTER DATABASE `parking_cloud`
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_general_ci;

-- 校验字符集(必须 utf8mb4:存量订单/车牌/备注里存在 emoji 与生僻字)
SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME
FROM information_schema.SCHEMATA
WHERE SCHEMA_NAME = 'parking_cloud';