为了能快速了解并处理您的问题,请提供以下基础信息:
系统版本:OpenCloudOS 8.8.2305 x86_64(Py3.7.8)
问题描述:下面这个接口,在我本地调用一点问题没有,本地数据库版本是8.0.19,部署到服务器调用就会报500,服务器数据库版本8.0.23怎么解决呢,我卡了一周了 相关截图(日志、错误):{
"message": "服务器内部错误",
"error": "Incorrect arguments to mysqld_stmt_execute"
}
//房间历史记录
router.get('/roomHistory', async (req, res) => {
const { type = 'total', pageNum = 1, pageSize = 10 } = req.query
const offset = (pageNum - 1) * pageSize
const openid = req.user.openid
try {
let scoreCondition = ''
if (type === 'wins') {
scoreCondition = ' AND m.score >= 0'
} else if (type === 'losses') {
scoreCondition = ' AND m.score < 0'
}
// 查询满足条件的房间信息,包括创建者的ID
const roomsQuery = `
SELECT
r.roomId, r.createTime, r.roomStatus, r.creatorId
FROM
multiple_rooms r
JOIN
multiple_rooms_members m ON m.roomId = r.roomId
WHERE
m.openid = ? ${scoreCondition} AND m.isDeleted = 0
GROUP BY
r.roomId
ORDER BY
r.createTime DESC
LIMIT ? , ?`
console.log(typeof openid, typeof offset, typeof pageSize)
const [rooms] = await db.execute(roomsQuery, [openid, offset, pageSize])
// 对每个房间,查询房间内所有玩家的信息,包括openid
let roomHistory = await Promise.all(
rooms.map(async room => {
console.log('roomId', typeof room.roomId)
const playersQuery = `
SELECT
m.score, u.username, u.avatar, m.openid
FROM
multiple_rooms_members m
JOIN
users u ON u.openid = m.openid
WHERE
m.roomId = ? AND m.isDeleted = 0`
const [players] = await db.execute(playersQuery, [room.roomId])
return {
...room,
players
}
})
)
// 计算不同类型的总条数
const countQuery = `
SELECT
SUM(CASE WHEN m.score >= 0 AND m.isDeleted = 0 THEN 1 ELSE 0 END) AS wins,
SUM(CASE WHEN m.score < 0 AND m.isDeleted = 0 THEN 1 ELSE 0 END) AS losses,
COUNT(*) AS total
FROM
multiple_rooms_members m
JOIN
multiple_rooms r ON m.roomId = r.roomId
WHERE
m.openid = ? AND m.isDeleted = 0`
const [[{ wins, losses, total }]] = await db.execute(countQuery, [openid])
res.json({
message: '获取记录成功',
roomHistory,
counts: {
total,
wins: Number(wins),
losses: Number(losses)
},
pageNum
})
} catch (error) {
console.error('获取记录失败:', error)
res.status(500).json({ message: '服务器内部错误', error: error.message })
}
})
|