Skip to content

Commit b402bf4

Browse files
committed
fixed:can't create table of file
modify:charset to utf8mb4_unicode_ci
1 parent f1de661 commit b402bf4

File tree

3 files changed

+29
-22
lines changed

3 files changed

+29
-22
lines changed
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
/*
22
Navicat Premium Data Transfer
33
4-
Source Server : 192.168.1.12
4+
Source Server : QCloud
55
Source Server Type : MySQL
6-
Source Server Version : 80027
7-
Source Host : 192.168.1.12: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_Storage
99
1010
Target Server Type : MySQL
11-
Target Server Version : 80027
11+
Target Server Version : 80032 (8.0.32-0ubuntu0.22.04.2)
1212
File Encoding : 65001
1313
14-
Date: 06/01/2022 10:45:33
14+
Date: 19/04/2023 13:46:21
1515
*/
1616

1717
SET NAMES utf8mb4;
@@ -23,14 +23,14 @@ SET FOREIGN_KEY_CHECKS = 0;
2323
DROP TABLE IF EXISTS `XStorage_File`;
2424
CREATE TABLE `XStorage_File` (
2525
`ID` int NOT NULL AUTO_INCREMENT COMMENT 'ID序号',
26-
`BuckKey` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路径KEY',
27-
`FilePath` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件路径',
28-
`FileName` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件名称',
29-
`FileHash` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件HASH',
30-
`FileUser` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属用户',
26+
`BuckKey` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '路径KEY',
27+
`FilePath` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件路径',
28+
`FileName` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件名称',
29+
`FileHash` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件HASH',
30+
`FileUser` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件所属用户',
3131
`FileSize` bigint NOT NULL COMMENT '文件大小',
3232
`FileTime` datetime NOT NULL COMMENT '插入时间',
3333
PRIMARY KEY (`ID`) USING BTREE
34-
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;
34+
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC;
3535

36-
SET FOREIGN_KEY_CHECKS = 1;
36+
SET FOREIGN_KEY_CHECKS = 1;

XEngine_SQLFile/XStorage_Create.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@
33
*/
44

55

6-
CREATE DATABASE `XEngine_Storage` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_general_ci;
6+
CREATE DATABASE `XEngine_Storage` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci;

XEngine_Source/StorageModule_Database/Database_File/Database_File.cpp

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ bool CDatabase_File::Database_File_Init(DATABASE_MYSQL_CONNECTINFO *pSt_DBConnec
5555
m_nTimeMonth = nTimeDay;
5656
//连接数据库
5757
_tcsxcpy(pSt_DBConnector->tszDBName, _X("XEngine_Storage"));
58-
if (!DataBase_MySQL_Connect(&xhDBSQL, pSt_DBConnector, 5, true, _X("utf8")))
58+
if (!DataBase_MySQL_Connect(&xhDBSQL, pSt_DBConnector))
5959
{
6060
Database_IsErrorOccur = true;
6161
Database_dwErrorCode = DataBase_GetLastError();
@@ -493,18 +493,25 @@ bool CDatabase_File::Database_File_CreateTable()
493493

494494
_xstprintf(tszSQLQuery, _X("CREATE TABLE IF NOT EXISTS `%s` ("
495495
"`ID` int NOT NULL AUTO_INCREMENT COMMENT 'ID序号',"
496-
"`BuckKey` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '路径KEY',"
497-
"`FilePath` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件路径',"
498-
"`FileName` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文件名称',"
499-
"`FileHash` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件HASH',"
500-
"`FileUser` varchar(260) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件所属用户',"
496+
"`BuckKey` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '路径KEY',"
497+
"`FilePath` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件路径',"
498+
"`FileName` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '文件名称',"
499+
"`FileHash` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件HASH',"
500+
"`FileUser` varchar(260) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '文件所属用户',"
501501
"`FileSize` bigint NOT NULL COMMENT '文件大小',"
502502
"`FileTime` datetime NOT NULL COMMENT '插入时间',"
503503
"PRIMARY KEY (`ID`) USING BTREE"
504-
") ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;"
504+
") ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;"
505505
), tszTableName);
506-
507-
if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLQuery))
506+
#ifdef _MSC_BUILD
507+
int nUTFLen = 0;
508+
XCHAR tszUTFBuffer[2048];
509+
memset(tszUTFBuffer, '\0', sizeof(tszUTFBuffer));
510+
BaseLib_OperatorCharset_AnsiToUTF(tszSQLQuery, tszUTFBuffer, &nUTFLen);
511+
if (!DataBase_MySQL_Execute(xhDBSQL, tszUTFBuffer))
512+
#else
513+
if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLQuery))
514+
#endif
508515
{
509516
Database_IsErrorOccur = true;
510517
Database_dwErrorCode = DataBase_GetLastError();

0 commit comments

Comments
 (0)