Skip to content

Commit 959a217

Browse files
committed
update:mysql charset to utf8mb4 and unicode
1 parent cbbfa08 commit 959a217

File tree

4 files changed

+46
-37
lines changed

4 files changed

+46
-37
lines changed

XEngine_SQLFile/CreateDatabase.sql

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
*/
44

55

6-
CREATE DATABASE `XEngine_MQData` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
7-
CREATE DATABASE `XEngine_MQUser` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
6+
CREATE DATABASE `XEngine_MQData` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;
7+
CREATE DATABASE `XEngine_MQUser` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;

XEngine_SQLFile/XEngine_MQData.sql

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
/*
22
Navicat Premium Data Transfer
33
4-
Source Server : Test
4+
Source Server : QCloud
55
Source Server Type : MySQL
6-
Source Server Version : 80032 (8.0.32-0ubuntu0.20.04.2)
7-
Source Host : 192.168.1.10:3306
6+
Source Server Version : 80032 (8.0.32-0ubuntu0.22.04.2)
7+
Source Host : 42.194.178.57:3306
88
Source Schema : XEngine_MQData
99
1010
Target Server Type : MySQL
11-
Target Server Version : 80032 (8.0.32-0ubuntu0.20.04.2)
11+
Target Server Version : 80032 (8.0.32-0ubuntu0.22.04.2)
1212
File Encoding : 65001
1313
14-
Date: 22/02/2023 16:11:34
14+
Date: 23/04/2023 09:23:59
1515
*/
1616

1717
SET NAMES utf8mb4;
@@ -23,17 +23,17 @@ SET FOREIGN_KEY_CHECKS = 0;
2323
DROP TABLE IF EXISTS `XEngine_CommKey`;
2424
CREATE TABLE `XEngine_CommKey` (
2525
`ID` int NOT NULL AUTO_INCREMENT,
26-
`tszUserName` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '谁发布的消息',
27-
`tszQueueName` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '所属队列',
26+
`tszUserName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '谁发布的消息',
27+
`tszQueueName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属队列',
2828
`nQueueSerial` bigint NOT NULL COMMENT '消息序列',
2929
`nQueueGetTime` bigint NOT NULL COMMENT '获取次数',
30-
`tszQueueLeftTime` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '过期时间',
31-
`tszQueuePublishTime` varchar(128) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '发布时间',
32-
`tszQueueData` varchar(8192) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '保存数据',
30+
`tszQueueLeftTime` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '过期时间',
31+
`tszQueuePublishTime` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发布时间',
32+
`tszQueueData` varchar(8192) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '保存数据',
3333
`nDataLen` int NOT NULL COMMENT '数据大小',
3434
`nDataType` tinyint NULL DEFAULT NULL COMMENT '数据类型',
3535
`tszQueueCreateTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '插入时间',
3636
PRIMARY KEY (`ID`) USING BTREE
37-
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
37+
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
3838

3939
SET FOREIGN_KEY_CHECKS = 1;

XEngine_SQLFile/XEngine_MQUser.sql

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
/*
22
Navicat Premium Data Transfer
33
4-
Source Server : Test
4+
Source Server : QCloud
55
Source Server Type : MySQL
6-
Source Server Version : 80032 (8.0.32-0ubuntu0.20.04.2)
7-
Source Host : 192.168.1.10:3306
6+
Source Server Version : 80032 (8.0.32-0ubuntu0.22.04.2)
7+
Source Host : 42.194.178.57:3306
88
Source Schema : XEngine_MQUser
99
1010
Target Server Type : MySQL
11-
Target Server Version : 80032 (8.0.32-0ubuntu0.20.04.2)
11+
Target Server Version : 80032 (8.0.32-0ubuntu0.22.04.2)
1212
File Encoding : 65001
1313
14-
Date: 22/02/2023 16:11:42
14+
Date: 23/04/2023 09:23:49
1515
*/
1616

1717
SET NAMES utf8mb4;
@@ -22,53 +22,53 @@ SET FOREIGN_KEY_CHECKS = 0;
2222
-- ----------------------------
2323
DROP TABLE IF EXISTS `KeyOwner`;
2424
CREATE TABLE `KeyOwner` (
25-
`tszUserName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '所属用户',
26-
`tszKeyName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '拥有的队列名称',
25+
`tszUserName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属用户',
26+
`tszKeyName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '拥有的队列名称',
2727
`tszCreateTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
2828
PRIMARY KEY (`tszKeyName`) USING BTREE
29-
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
29+
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
3030

3131
-- ----------------------------
3232
-- Table structure for UserInfo
3333
-- ----------------------------
3434
DROP TABLE IF EXISTS `UserInfo`;
3535
CREATE TABLE `UserInfo` (
3636
`ID` int NOT NULL AUTO_INCREMENT,
37-
`tszUserName` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '用户名',
38-
`tszUserPass` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '密码',
39-
`tszEMailAddr` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NULL DEFAULT NULL COMMENT '电子邮件',
37+
`tszUserName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
38+
`tszUserPass` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码',
39+
`tszEMailAddr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '电子邮件',
4040
`nPhoneNumber` bigint NULL DEFAULT NULL COMMENT '电话号码',
4141
`nIDNumber` bigint NULL DEFAULT NULL COMMENT '身份证',
4242
`nUserState` tinyint NOT NULL COMMENT '用户状态1在线,0离线',
4343
`nUserLevel` int NOT NULL COMMENT '用户等级,数字越小越高',
4444
`tszLoginTime` datetime NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '登录时间',
4545
`tszCreateTime` datetime NOT NULL COMMENT '注册时间',
4646
PRIMARY KEY (`ID`) USING BTREE
47-
) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
47+
) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
4848

4949
-- ----------------------------
5050
-- Table structure for UserKey
5151
-- ----------------------------
5252
DROP TABLE IF EXISTS `UserKey`;
5353
CREATE TABLE `UserKey` (
5454
`ID` int NOT NULL AUTO_INCREMENT,
55-
`tszKeyUser` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '用户名',
56-
`tszKeyName` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci NOT NULL COMMENT '用户绑定的KEY名称',
55+
`tszKeyUser` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
56+
`tszKeyName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户绑定的KEY名称',
5757
`nKeySerial` bigint NOT NULL COMMENT '用户绑定KEY的序列号',
5858
`tszUPTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间',
5959
`tszCreateTime` datetime NOT NULL COMMENT '创建的时间',
6060
PRIMARY KEY (`ID`) USING BTREE
61-
) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci ROW_FORMAT = DYNAMIC;
61+
) ENGINE = InnoDB AUTO_INCREMENT = 0 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
6262

6363
-- ----------------------------
6464
-- Table structure for UserTime
6565
-- ----------------------------
6666
DROP TABLE IF EXISTS `UserTime`;
6767
CREATE TABLE `UserTime` (
68-
`tszQueueName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '队列名称',
68+
`tszQueueName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '队列名称',
6969
`nIDMsg` bigint NOT NULL COMMENT '队列唯一ID',
7070
`nIDTime` bigint NOT NULL COMMENT '发布时间',
7171
`tszCreateTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间'
72-
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;
72+
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
7373

7474
SET FOREIGN_KEY_CHECKS = 1;

XEngine_Source/MQCore_DBModule/DBModule_MQData/DBModule_MQData.cpp

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -561,26 +561,35 @@ bool CDBModule_MQData::DBModule_MQData_CreateTable(LPCXSTR lpszQueueName)
561561
{
562562
DBModule_IsErrorOccur = false;
563563

564+
int nUTFLen = 0;
564565
XCHAR tszSQLQuery[2048];
566+
XCHAR tszUTFQuery[2048];
567+
565568
memset(tszSQLQuery, '\0', sizeof(tszSQLQuery));
569+
memset(tszUTFQuery, '\0', sizeof(tszUTFQuery));
566570

567571
_xstprintf(tszSQLQuery, _X("CREATE TABLE IF NOT EXISTS `%s` ("
568572
"`ID` int NOT NULL AUTO_INCREMENT,"
569-
"`tszUserName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '谁发布的消息',"
570-
"`tszQueueName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '所属队列',"
573+
"`tszUserName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '谁发布的消息',"
574+
"`tszQueueName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '所属队列',"
571575
"`nQueueSerial` bigint NOT NULL COMMENT '消息序列',"
572576
"`nQueueGetTime` bigint NOT NULL COMMENT '获取次数',"
573-
"`tszQueueLeftTime` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '过期时间',"
574-
"`tszQueuePublishTime` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发布时间',"
575-
"`tszQueueData` varchar(8192) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '保存数据',"
577+
"`tszQueueLeftTime` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '过期时间',"
578+
"`tszQueuePublishTime` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '发布时间',"
579+
"`tszQueueData` varchar(8192) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '保存数据',"
576580
"`nDataLen` int NOT NULL COMMENT '数据大小',"
577581
"`nDataType` tinyint NOT NULL COMMENT '数据类型',"
578582
"`tszQueueCreateTime` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '插入时间',"
579583
"PRIMARY KEY (`ID`) USING BTREE"
580-
") ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;"
584+
") ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;"
581585
), lpszQueueName);
582586

583-
if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLQuery))
587+
#ifdef _MSC_BUILD
588+
BaseLib_OperatorCharset_AnsiToUTF(tszSQLQuery, tszUTFQuery, &nUTFLen);
589+
if (!DataBase_MySQL_Execute(xhDBSQL, tszUTFQuery))
590+
#else
591+
if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLQuery))
592+
#endif
584593
{
585594
DBModule_IsErrorOccur = true;
586595
DBModule_dwErrorCode = DataBase_GetLastError();

0 commit comments

Comments
 (0)