宝塔用户_zmyelb 发表于 2024-4-18 17:25:59

【待反馈】mysql8.0.23报错

为了能快速了解并处理您的问题,请提供以下基础信息:面板、插件版本:8.0.6
系统版本: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 })
}
})

堡塔运维南一 发表于 2024-4-19 15:55:11

您好,私信发送您的面板登录信息,我帮你排查一下,私信完这里回复我

宝塔用户_zmyelb 发表于 2024-4-19 17:12:33

运维技术南一 发表于 2024-4-19 15:55
您好,私信发送您的面板登录信息,我帮你排查一下,私信完这里回复我

已私信发送

堡塔运维南一 发表于 2024-4-22 16:18:23

宝塔用户_zmyelb 发表于 2024-4-19 17:12
已私信发送

排查了一下,跟我们宝塔面板没什么关系,您那边检查一下自己的网站代码逻辑
页: [1]
查看完整版本: 【待反馈】mysql8.0.23报错