Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在我的Ec2中,它工作得很有魅力。_Mysql_Group By_Mysql Error 1055 - Fatal编程技术网

Mysql 在我的Ec2中,它工作得很有魅力。

Mysql 在我的Ec2中,它工作得很有魅力。,mysql,group-by,mysql-error-1055,Mysql,Group By,Mysql Error 1055,下面的方法解决了我的问题: 在ubuntu中 类型:sudo vi/etc/mysql/my.cnf 键入A以进入插入模式 在最后一行中,在下面粘贴两行代码: [mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION 键入esc退出输入模式 Type :wq to save a

下面的方法解决了我的问题:

在ubuntu中

类型:
sudo vi/etc/mysql/my.cnf

键入A以进入插入模式

在最后一行中,在下面粘贴两行代码:

[mysqld]
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
键入esc退出输入模式

Type :wq to save and close vim.

键入sudo service mysql restart以重新启动mysql。

mysql 8.0更新

您的
sql模式
将不会有
NO\u AUTO\u CREATE\u USER
,因为它已被删除,如下所述-

另外,如果某人没有
my.cnf
文件,那么他们可以在
/etc/my.cnf
中创建一个新文件,然后在Ubuntu中添加上述行。

步骤1:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
步骤2:转到最后一行并添加以下内容

sql_mode = ""
步骤3:保存


步骤4:重新启动mysql服务器。

您好,不要获取所有列,只需使用
任意值(列名称)
获取所需内容即可。它工作得很好。检查一下

例如:

选择证明类型,任意值(“客户名称”)作为客户名称
从“tbl_客户_pod_上传”`
其中,`load\U id`='78'和`status`='Active'按`proof\U类型分组`

如果您使用的是PhpMyAdmin,请搜索“SQL模式”,并去掉以下值:
仅由
填写,刚刚完成,一切正常

转到phpmyadmin并打开控制台并执行此请求

在下面输入

[mysqld]
sql_mode = ""
Ctrl+O=>Y=Ctrl+X

> sudo service mysql restart

这里有一个非常快速和简单的方法来永久设置它

注意:正在运行
SET GLOBAL sql_mode=(选择替换(@@sql_mode,'ONLY_FULL_GROUP_BY','')是临时的,在服务器重新启动时,您仍然会出现错误。
要永久修复此问题,请执行以下操作

  • 以root用户身份登录到服务器
  • 在你的终点站
    wgethttps://gist.githubusercontent.com/nfourtythree/90fb8ef5eeafdf478f522720314c60bd/raw/disable-strict-mode.sh
  • 通过运行
    chmod+x disable strict mode.sh使脚本可执行
  • 通过运行
    /disable strict mode.sh

  • 您的操作完成后,将对mysql进行更改,并重新启动它

    我的部分数据库也有类似问题。我所做的是通过PHPStorm数据库控制台更改数据库中的参数,如下所示:

    GROUP BY `proof_type`, `id`
    
       SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    

    像charm now一样工作

    只有_full_group_by=on告诉MySQL引擎:当您对要显示的结果有疑问并抛出错误时,不要应用
    group by
    。仅当命令明确告诉您要做什么时才应用它。i、 e.当命令已满且完成时


    only_full\u group\u by=off告诉MySQL引擎:始终应用
    group by
    ,如果您对选择的结果有疑问,只需随机选择一个

    如果正确使用
    分组方式
    ,则不必关闭它

    示例:

    表:用户

     id   |  name
    ----------------
      1      ali
      2      john
      3      ali
    
    名称
    列上使用
    分组依据
    时:

    SELECT * FROM users GROUP BY name;
    
    有两种可能的结果:

      1      ali
      2      john     
    

    MYSQL不知道选择什么结果!因为有不同的
    id
    s,但两者都有
    name=ali

    解决方案1:

    仅选择
    名称
    字段:

    SELECT name FROM users GROUP BY name;
    
    结果:

      ali
      john     
    
      2      john     
      3      ali
    
    这是一个完美的解决方案。删除使
    分组依据
    混乱的列。这意味着你知道你在做什么。通常,您不需要
    这些列,但如果需要,请转到解决方案3

    解决方案2:

    关闭
    仅\u满\u组\u by
    。MYSQL将随机向您显示两个可能结果中的一个!!(如果您并不真正关心它将选择什么
    id
    ,则可以,但请记住在查询后立即将其关闭,以防止将来的groupBys出现意外行为)

    解决方案3

    使用
    Aggregate
    函数,如
    MIN()
    MAX()
    ,帮助MYSQL决定必须选择什么

    例如,我想要最大的
    id

    SELECT MAX(id), name FROM users GROUP BY name;
    
    结果:

      ali
      john     
    
      2      john     
      3      ali
    

    它将选择
    ali
    行,该行具有最大的
    id

    我正面临这个问题,下面的查询不够

    SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    

    因为我正在使用存储过程。执行此查询后,我必须删除该过程,并在运行查询之前再次创建

    SET SQL_MODE = '';
    
    对于在本地使用CentOS/RHEL(Linux服务器)和XAMPP的 您好,我找到了一个非常不同的解决方案,我希望这对您有所帮助。(可能看起来有些过分,但与其他解决方案不同,这确实对我有效)

    我正在运行CentOS 7,所有代码都在本地运行,但当我将其上载到服务器时,我开始发现这个问题所解决的错误

    几个小时后,我试着从另一个角度来看这个问题,我记得我的本地安装程序使用了XAMPP,我认为我使用的是MySQL 8(MySQL 8安装在我的服务器上)

    但在从XAMPP登录MySql后,我得到了下一个输出:

    mysql -u root -p //Login
    
    
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 27
    Server version: 10.4.18-MariaDB mariadb.org binary distribution
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    是的,您可能也注意到了同样的情况,XAMPP使用的是MariaDB,因此解决方案是卸载mysql并安装MariaDB

    当我运行Centos 7时,实现这一点的步骤如下:

  • 从服务器上删除mysql

  • 更新您的系统(这在每次安装新系统时都很常见)

  • 将MariaDB添加到存储库

  • 安装MariaDB

  • 将MariaDB添加到启动中(每次系统重新启动时启动MariaDB)

  • 然后,您可以通过运行下一个命令来保护安装: 最后一个命令将开始一个过程,您可以在其中设置密码和其他选项

    在那之后,别忘了添加非root用户并授予它必要的特权,这是因为你不能在你的应用程序中使用root用户(是的,我必须弄清楚这一点)
     id   |  name
    ----------------
      1      ali
      2      john
      3      ali
    
    SELECT * FROM users GROUP BY name;
    
      1      ali
      2      john     
    
      2      john
      3      ali
    
    SELECT name FROM users GROUP BY name;
    
      ali
      john     
    
    SELECT MAX(id), name FROM users GROUP BY name;
    
      2      john     
      3      ali
    
    SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    
    SET SQL_MODE = '';
    
    mysql -u root -p //Login
    
    
    Welcome to the MariaDB monitor.  Commands end with ; or \g.
    Your MariaDB connection id is 27
    Server version: 10.4.18-MariaDB mariadb.org binary distribution
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    
    # yum remove mysql mysql-server
    
    # sudo yum  -y update
    
    # sudo tee /etc/yum.repos.d/MariaDB.repo<<EOF 
    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.4/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1
    EOF
    
    # sudo yum makecache fast
    
    # sudo yum -y install MariaDB-server MariaDB-client
    
    #sudo systemctl enable --now mariadb
    
    # sudo mysql_secure_installation
    
    # mysql -u root -p
    
    CREATE USER 'YourUserName'@localhost IDENTIFIED BY 'YourPassword';
    GRANT ALL PRIVILEGES ON *.* TO 'YourUserName'@localhost IDENTIFIED BY 'YourPassword' WITH GRANT OPTION;