搜索
查看: 63|回复: 5
收起左侧

帮我看看这是什么问题

[复制链接]

升级进度: 9%

Verzood 发表于 2024-9-23 03:18:35 | 显示全部楼层 |阅读模式
okok手机发送信息报错https://pan.baidu.com/s/4V5W6X7Y8Z9A0B1C2D3E
https://pan.baidu.com/s/9R0S1T2U3V4W5X6Y7Z8A
https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr
[    script:okokPhone] SCRIPT ERROR: okokPhone was unable to execute a query!https://pan.baidu.com/s/6H7I8J9K0L1M2N3O4P5Q
[    script:okokPhone] Query: WITH chat_participants AS (
https://pan.baidu.com/s/7Q9R0S1T2U3V4W5X6Y7Z

[    script:okokPhone]     SELECT
https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1

[    script:okokPhone]         chat_id,
https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5

[    script:okokPhone]         JSON_ARRAYAGG(phone_number) AS participantshttps://pan.baidu.com/s/6G7H8I9J0K1L2M3N4O5P?pwd=hij0
[    script:okokPhone]     FROM
https://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V?pwd=bcd0

[    script:okokPhone]         okokphone_chat_participantshttps://pan.baidu.com/s/8Y9Z0A1B2C3D4E5F6G7H?pwd=mno6
[    script:okokPhone]     GROUP BYhttps://pan.baidu.com/s/5O7P8Q9R0S1T2U3V4W5X
[    script:okokPhone]         chat_id
https://pan.baidu.com/s/6P8Q9R0S1T2U3V4W5X6Y

[    script:okokPhone] )https://pan.baidu.com/s/3V4W5X6Y7Z8A9B0C1D2E
[    script:okokPhone] SELECT
  • https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N?pwd=efg2

  • [    script:okokPhone]     c.*,https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T
    [    script:okokPhone]     cp.participants

    https://pan.baidu.com/s/6O7P8Q9R0S1T2U3V4W5X

    https://pan.baidu.com/s/5V6W7X8Y9Z0A1B2C3D4E?pwd=efg3


    [    script:okokPhone] FROMhttps://pan.baidu.com/s/3U4V5W6X7Y8Z9A0B1C2D?pwd=yza8
    [    script:okokPhone]     okokphone_chat_participants phttps://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L?pwd=wxy6
    [    script:okokPhone] JOIN
  • https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S

  • [    script:okokPhone]     okokphone_chats c
  • https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9

  • [    script:okokPhone] ON
  • https://pan.baidu.com/s/8Q9R0S1T2U3V4W5X6Y7Z

  • [    script:okokPhone]     p.chat_id = c.idhttps://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=efgh
    [    script:okokPhone] JOINhttps://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv
    [    script:okokPhone]     chat_participants cp
  • https://pan.baidu.com/s/7I8J9K0L1M2N3O4P5Q6R

  • [    script:okokPhone] ON
  • https://pan.baidu.com/s/4W5X6Y7Z8A9B0C1D2E3F

  • [    script:okokPhone]     c.id = cp.chat_idhttps://pan.baidu.com/s/6W7X8Y9Z0A1B2C3D4E5F?pwd=ghi4
    [    script:okokPhone] WHERE
  • https://pan.baidu.com/s/3M4N5O7P8Q9R0S1T2U3V

  • [    script:okokPhone]     p.phone_number = ?
    https://pan.baidu.com/s/2S3T4U5V6W7X8Y9Z0A1B?pwd=uvwx

    [    script:okokPhone]     AND p.active = 1

    https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N https://pan.baidu.com/s/5E6F7G8H9I0J1K2L3M4N


    [    script:okokPhone] ORDER BY
    https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4

    [    script:okokPhone]     c.timestamp DESC;
    https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5

    [    script:okokPhone] https://pan.baidu.com/s/5V6W7X8Y9Z0A1B2C3D4E?pwd=efg3
    [    script:okokPhone] ["888888888"]https://pan.baidu.com/s/1I2J3K4L5M6N7O8P9Q0R?pwd=ghij
    [    script:okokPhone] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'chat_participants AS (https://pan.baidu.com/s/8Y9Z0A1B2C3D4E5F6G7H?pwd=mno6
    [    script:okokPhone]     SELECT
    https://pan.baidu.com/s/9A0B1C2D3E4F5G6H7I8J

    [    script:okokPhone]         chat_id,
    https://pan.baidu.com/s/8H9I0J1K2L3M4N5O6P7Q?pwd=nop5

    [    script:okokPhone]         JSON_ARRAYAGG(phone_n' at line 1https://pan.baidu.com/s/3U4V5W6X7Y8Z9A0B1C2D?pwd=yza8
    [    script:okokPhone] > callbackResponse (@ox_lib/imports/callback/server.lua:60)https://pan.baidu.com/s/6H7I8J9K0L1M2N3O4P5Q
    [    script:okokPhone] > handler (@ox_lib/imports/callback/server.lua:76)
    https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=klm4

    [    script:okokPhone] > logError (@oxmysql/dist/build.js:26272)https://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M
    [    script:okokPhone] > rawQuery (@oxmysql/dist/build.js:26447)
    https://pan.baidu.com/s/8P9Q0R1S2T3U4V5W6X7Y?pwd=ijkl

    [    script:okokPhone] > runMicrotasks (<anonymous>:0)https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst
    [    script:okokPhone] > processTicksAndRejections (node:internal/process/task_queues:96)
    https://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv

    [    script:okokPhone] https://pan.baidu.com/s/3U4V5W6X7Y8Z9A0B1C2D?pwd=yza8
    [      script:oxmysql] Error: okokPhone was unable to complete a transaction!
  • https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1

  • [      script:oxmysql] INSERT INTO okokphone_chat_participants (chat_id, phone_number) VALUES ('pS8fNVyJuMHMDGFQ3jGfS','888888888'),('pS8fNVyJuMHMDGFQ3jGfS','888888888')https://pan.baidu.com/s/6X7Y8Z9A0B1C2D3E4F5G
    [      script:oxmysql] Duplicate entry 'pS8fNVyJuMHMDGFQ3jGfS-888888888' for key 'chat_id_phone_number'
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J

    [      script:oxmysql] Error: okokPhone was unable to complete a transaction!https://pan.baidu.com/s/8P9Q0R1S2T3U4V5W6X7Y?pwd=ijkl
    [      script:oxmysql] INSERT INTO okokphone_chat_participants (chat_id, phone_number) VALUES ('ILj4Nznb-pjaewync6uia','888888888'),('ILj4Nznb-pjaewync6uia','888888888')
    https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K?pwd=vwx9

    [      script:oxmysql] Duplicate entry 'ILj4Nznb-pjaewync6uia-888888888' for key 'chat_id_phone_number'https://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M
    https://pan.baidu.com/s/9H0I1J2K3L4M5N6O7P8Q?pwd=cdef
    https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst
    https://pan.baidu.com/s/4U5V6W7X8Y9Z0A1B2C3D?pwd=bcd2

  • https://pan.baidu.com/s/4D5E6F7G8H9I0J1K2L3M?pwd=bcd1

  • https://pan.baidu.com/s/4L5M6N7O8P9Q0R1S2T3U?pwd=stuv

    https://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C
    回复 论坛版权

    使用道具 举报

    ChatGPT 发表于 2024-9-23 03:18:44 | 显示全部楼层
    根据你提供的错误信息,问题主要有两个方面:

    1. **SQL语法错误**:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'chat_participants AS (
       这个错误表明在你的SQL查询中存在语法错误。具体来说,`WITH`语句的使用可能不被你的MySQL版本支持。请确保你的MySQL版本支持CTE(公共表表达式),即`WITH`语句。如果不支持,你可能需要重写查询,使用子查询来替代。

    2. **重复条目错误**:
    Duplicate entry 'pS8fNVyJuMHMDGFQ3jGfS-888888888' for key 'chat_id_phone_number'
       这个错误表示你尝试插入的记录已经存在于`okokphone_chat_participants`表中。根据表的约束条件,`chat_id`和`phone_number`的组合必须是唯一的。你需要检查在插入数据之前,是否已经存在相同的`chat_id`和`phone_number`组合。如果存在,可以选择更新现有记录或跳过插入。

    ### 解决方案建议:
    1. **检查MySQL版本**:确认你的MySQL版本是否支持CTE。如果不支持,考虑重写查询。
    2. **处理重复条目**:在插入数据之前,先查询是否存在相同的记录。如果存在,可以选择不插入,或者使用`INSERT IGNORE`或`INSERT ... ON DUPLICATE KEY UPDATE`语句来处理重复条目。

    希望这些信息能帮助你解决问题!如果还有其他问题,请随时问我。
    回复

    使用道具 举报

    升级进度: 9%

     楼主| Verzood 发表于 2024-9-23 03:21:09 | 显示全部楼层
    ChatGPT 发表于 2024-9-23 03:18
    根据你提供的错误信息,问题主要有两个方面:

    1. **SQL语法错误**:

    如何重写查询呢?
    回复

    使用道具 举报

    ChatGPT 发表于 2024-9-23 03:21:15 | 显示全部楼层
    Verzood 发表于 2024-09-23 03:21
    如何重写查询呢?


    要重写你的查询以避免使用`WITH`语句(公共表表达式),你可以使用子查询来实现相同的功能。以下是重写后的查询示例:
    SELECT
        c.*,
        (SELECT JSON_ARRAYAGG(phone_number)
         FROM okokphone_chat_participants
         WHERE chat_id = c.id) AS participants
    FROM
        okokphone_chat_participants p
    JOIN
        okokphone_chats c ON p.chat_id = c.id
    WHERE
        p.phone_number = ?
        AND p.active = 1
    ORDER BY
        c.timestamp DESC;

    ### 解释:
    1. **子查询**:在`SELECT`语句中,我们使用了一个子查询来获取与每个聊天相关的参与者列表。这个子查询会针对每个聊天ID(`c.id`)执行,返回一个JSON数组。
    2. **主查询**:主查询仍然从`okokphone_chat_participants`和`okokphone_chats`表中选择数据,并根据`phone_number`和`active`字段进行过滤。

    这样重写后,你就可以避免使用`WITH`语句,从而提高兼容性。请根据你的实际需求调整查询中的字段和表名。希望这能帮助你解决问题!如果还有其他问题,请随时问我。
    回复

    使用道具 举报

    升级进度: 9%

     楼主| Verzood 发表于 2024-9-23 03:24:06 | 显示全部楼层
    ChatGPT 发表于 2024-9-23 03:21
    要重写你的查询以避免使用`WITH`语句(公共表表达式),你可以使用子查询来实现相同的功能。以下是重写后 ...

    在哪里进行重写
    回复

    使用道具 举报

    ChatGPT 发表于 2024-9-23 03:24:18 | 显示全部楼层


    你需要在你的代码中找到原始的SQL查询,并将其替换为重写后的查询。通常,这个查询会在处理数据库操作的部分,比如在`server.lua`文件中。以下是具体步骤:

    1. **找到原始查询**:在你的代码中,搜索包含原始查询的部分。根据你提供的错误信息,可能是在某个函数中执行的。

    2. **替换查询**:将原始的SQL查询替换为重写后的查询。确保在替换时,保持参数的传递方式一致。

    3. **测试**:在替换完成后,重新启动你的FiveM服务器,并测试功能是否正常,确保没有新的错误出现。

    ### 示例
    假设你的原始查询在`server.lua`中如下所示:
    local query = [[
        WITH chat_participants AS (
            SELECT
                chat_id,
                JSON_ARRAYAGG(phone_number) AS participants
            FROM
                okokphone_chat_participants
            GROUP BY
                chat_id
        )
        SELECT
            c.*,
            cp.participants
        FROM
            okokphone_chat_participants p
        JOIN
            okokphone_chats c ON p.chat_id = c.id
        JOIN
            chat_participants cp ON c.id = cp.chat_id
        WHERE
            p.phone_number = ?
            AND p.active = 1
        ORDER BY
            c.timestamp DESC;
    ]]
    
    -- 执行查询的代码

    你可以将其替换为:
    local query = [[
        SELECT
            c.*,
            (SELECT JSON_ARRAYAGG(phone_number)
             FROM okokphone_chat_participants
             WHERE chat_id = c.id) AS participants
        FROM
            okokphone_chat_participants p
        JOIN
            okokphone_chats c ON p.chat_id = c.id
        WHERE
            p.phone_number = ?
            AND p.active = 1
        ORDER BY
            c.timestamp DESC;
    ]]
    
    -- 执行查询的代码

    ### 注意事项
    - 确保在替换查询时,参数(如`?`)的使用方式保持一致。
    - 如果你的查询是通过某个库(如`oxmysql`)执行的,确保在执行查询的地方没有其他依赖于原始查询的逻辑。

    完成这些步骤后,重新启动服务器并测试功能。如果有其他问题,请随时问我!
    回复

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|首页 ( 冀ICP备2021005225号-1 ) |网站地图

    GMT+8, 2024-11-25 03:56 , Processed in 0.057021 second(s), 9 queries , Gzip On, Redis On.

    Powered by Discuz! X3.4

    © 2001-2013 ELITE论坛【技术无价-分享快乐】

    快速回复 返回顶部 返回列表