当前位置:论坛首页 > Linux面板 > 求助

【待反馈】mysql8.0.23报错

发表在 Linux面板2024-4-18 17:25 [复制链接] 3 94

为了能快速了解并处理您的问题,请提供以下基础信息:
面板、插件版本: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 | 显示全部楼层
您好,私信发送您的面板登录信息,我帮你排查一下,私信完这里回复我
使用道具 举报 回复 支持 反对
发表于 2024-4-19 17:12:33 | 显示全部楼层
运维技术南一 发表于 2024-4-19 15:55
您好,私信发送您的面板登录信息,我帮你排查一下,私信完这里回复我

已私信发送
使用道具 举报 回复 支持 反对
发表于 2024-4-22 16:18:23 | 显示全部楼层

排查了一下,跟我们宝塔面板没什么关系,您那边检查一下自己的网站代码逻辑
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

企业版年付运维跟进群

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急问题处理

论坛响应时间:10分钟

问题处理方式:1对1处理(优先)

工作时间:白班:9:00 - 18:00

工作时间:晚班:18:00 - 24:00

立即付费处理
快速回复 返回顶部 返回列表