CAKEPHP:该代码运作完美,但只是开始带来此错误

发布于 2025-02-06 13:10:50 字数 709 浏览 1 评论 0 原文

错误:SQLSTATE [42000]:语法错误或访问违规:1055 SELECT列表的表达式#3不在组中,并包含非聚集列'app.tasks.tasks.tasks.tasks.task_completed',它并不在功能上依赖于组中的列中的列,条款;这与sql_mode = hell

如果您使用的是SQL关键字作为表列名称,则可以在config/app.php中为数据库连接引用标识符。

SQL查询:

  select
    count(taskSemployees.task_id)为`count',
    taskSemployees.employee_id as`雇用
    tasks.task_completed为`task_completed` 
从
    tasks_employees任务员工 
    左加入任务任务(
        tasks.task_completed =:C0和
        tasks.id =(taskSemployees.task_id)
    ) 
在哪里
    年(TaskSemployees.Tarked)=:C1 
组
    taskSemployees.employee_id
 

如果要自定义此错误消息,请创建src/template/error/pdo_error.ctp

Error: SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'app.Tasks.task_completed' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

If you are using SQL keywords as table column names, you can enable identifier quoting for your database connection in config/app.php.

SQL Query:

SELECT
    COUNT(TasksEmployees.task_id) AS `count`,
    TasksEmployees.employee_id AS `employee_id`,
    Tasks.task_completed AS `task_completed` 
FROM
    tasks_employees TasksEmployees 
    LEFT JOIN tasks Tasks ON (
        Tasks.task_completed = :c0 AND
        Tasks.id = (TasksEmployees.task_id)
    ) 
WHERE
    YEAR(TasksEmployees.created) = :c1 
GROUP BY
    TasksEmployees.employee_id

If you want to customize this error message, create src/Template/Error/pdo_error.ctp

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三寸金莲 2025-02-13 13:10:50

您有2个选择可以解决以下内容:

1-如果您具有SQL root访问和权限(可以来自PhpMyAdmin),因此请从 sql_mode var

单击编辑并删除该量。

2-在中选择所有字段子句子句:

    SELECT
    COUNT(TasksEmployees.task_id) AS `count`,
    TasksEmployees.employee_id AS `employee_id`,
    Tasks.task_completed AS `task_completed` 
    FROM
    tasks_employees TasksEmployees 
    LEFT JOIN tasks Tasks ON (
        Tasks.task_completed = :c0 AND
        Tasks.id = (TasksEmployees.task_id)
    ) 
WHERE
    YEAR(TasksEmployees.created) = :c1 
GROUP BY
    employee_id, count, task_completed

you have 2 options to resolve this:

1 - If you have sql root access and permissions (it could be from phpmyadmin), so remove only_full_group_by from sql_mode var

enter image description here

Click in edit and remove that var.

2 - Include all fields selected in SELECT clause into the GROUP BY clause:

    SELECT
    COUNT(TasksEmployees.task_id) AS `count`,
    TasksEmployees.employee_id AS `employee_id`,
    Tasks.task_completed AS `task_completed` 
    FROM
    tasks_employees TasksEmployees 
    LEFT JOIN tasks Tasks ON (
        Tasks.task_completed = :c0 AND
        Tasks.id = (TasksEmployees.task_id)
    ) 
WHERE
    YEAR(TasksEmployees.created) = :c1 
GROUP BY
    employee_id, count, task_completed
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文