修复 MySQL 数据库兼容性问题 - strftime 函数

This commit is contained in:
zhang1106
2025-12-26 15:22:18 +08:00
parent 2228dcebe2
commit ebd342f3a6
2 changed files with 7 additions and 4 deletions
+5 -2
View File
@@ -5,6 +5,7 @@ const DB_TYPE = process.env.DB_TYPE || 'sqlite'; // 数据库类型:sqlite 或
// 根据数据库类型创建连接 // 根据数据库类型创建连接
let sequelize; let sequelize;
let dbDialect = 'sqlite'; // 实际使用的数据库类型
if (DB_TYPE === 'mysql') { if (DB_TYPE === 'mysql') {
// MySQL 配置 // MySQL 配置
@@ -19,6 +20,7 @@ if (DB_TYPE === 'mysql') {
logging: process.env.NODE_ENV === 'development' ? console.log : false logging: process.env.NODE_ENV === 'development' ? console.log : false
} }
); );
dbDialect = 'mysql';
} else { } else {
// SQLite 配置(默认) // SQLite 配置(默认)
sequelize = new Sequelize({ sequelize = new Sequelize({
@@ -28,7 +30,8 @@ if (DB_TYPE === 'mysql') {
dialectOptions: { dialectOptions: {
charset: 'utf8mb4' charset: 'utf8mb4'
} }
}); );
dbDialect = 'sqlite';
} }
module.exports = { sequelize, DB_TYPE }; module.exports = { sequelize, DB_TYPE, dbDialect };
+2 -2
View File
@@ -5,7 +5,7 @@ const { v4: uuidv4 } = require('uuid');
const { Ticket, TicketOperationRecord } = require('../models/ticketIndex'); const { Ticket, TicketOperationRecord } = require('../models/ticketIndex');
const Device = require('../models/Device'); const Device = require('../models/Device');
const User = require('../models/User'); const User = require('../models/User');
const { DB_TYPE } = require('../db'); const { dbDialect } = require('../db');
// 获取工单统计 (必须定义在 /:ticketId 之前) // 获取工单统计 (必须定义在 /:ticketId 之前)
router.get('/stats', async (req, res) => { router.get('/stats', async (req, res) => {
@@ -51,7 +51,7 @@ router.get('/stats', async (req, res) => {
const monthlyStats = await Ticket.findAll({ const monthlyStats = await Ticket.findAll({
where, where,
attributes: [ attributes: [
[DB_TYPE === 'mysql' [dbDialect === 'mysql'
? require('sequelize').fn('DATE_FORMAT', require('sequelize').col('createdAt'), '%Y-%m') ? require('sequelize').fn('DATE_FORMAT', require('sequelize').col('createdAt'), '%Y-%m')
: require('sequelize').fn('strftime', '%Y-%m', require('sequelize').col('createdAt')), : require('sequelize').fn('strftime', '%Y-%m', require('sequelize').col('createdAt')),
'month'], 'month'],