sql数据库执行错误代码1055怎么解决?

sql数据库执行错误代码1055怎么解决?,第1张

错误代码1055。不过看了Expression里面的原因描述,我基本知道怎么回事了。原因是因为mysql中对 group by 用法的规定。严格意义上说,就是group by之后。select 的字段只能是group by的字段。或者需要加聚合函数的。在 oracle 中,一直有这项约定。所以直接就会报错。但是mysql 直到 5.7 版本之后才把这个要求明确限制起来。

很明显,这种问题两种思路:第一修改sql。按照规定的规范重写项目中所有有问题的sql。很明显代价太大。风险很高;第二种那就是把这种限制去掉,让功能继续像5.7之前的样子一样能跑。我果断选择了第二种。因为第一种代价太大。

解决办法:

1. 首先如何查看当前数据库使用的sql_mode:

select @@sql_mode 

2. 修改mysql的配置文件,删掉only_full_group_by这一项

注意:Mac:Mysql默认安装在/usr/local目录下,这个目录可以通过command+shift+G进入:如下图

windows下是的配置文件是my.ini,自己可以找一下。

问题解决完了,然后剩下两个问题:

1. mysql里面的 sql_mode 一共有哪些,并且mode的值各自代表什么含义。在网上查询了一下,结果如下:

MySQL5.0以上版本支持三种sql_mode模式:ANSI、TRADITIONAL和STRICT_TRANS_TABLES

1、ANSI模式:宽松模式,更改语法和行为,使其更符合标准SQL。对插入数据进行校验,如果不符合定义类型或长度,对数据类型调整或截断保存,报warning警告。对于本文开头中提到的错误,可以先把sql_mode设置为ANSI模式,这样便可以插入数据,而对于除数为0的结果的字段值,数据库将会用NULL值代替。

将当前数据库模式设置为ANSI模式:切换到mysql命令下执行:set @@sql_mode=ANSI 

2、TRADITIONAL模式:严格模式,当向mysql数据库插入数据时,进行数据的严格校验,保证错误数据不能插入,报error错误,而不仅仅是警告。用于事物时,会进行事物的回滚。 注释:一旦发现错误立即放弃INSERT/UPDATE。如果你使用非事务存储引擎,这种方式不是你想要的,因为出现错误前进行的数据更改不会“滚动”,结果是更新“只进行了一部分”。

将当前数据库模式设置为TRADITIONAL模式:切换到mysql命令下执行:set @@sql_mode=TRADITIONAL

3、STRICT_TRANS_TABLES模式:严格模式,进行数据的严格校验,错误数据不能插入,报error错误。如果不能将给定的值插入到事务表中,则放弃该语句。对于非事务表,如果值出现在单行语句或多行语句的第1行,则放弃该语句。

将当前数据库模式设置为STRICT_TRANS_TABLES模式:切换到mysql命令下执行:set @@sql_mode=STRICT_TRANS_TABLES 

*** 作方法:1.建立新的程序,按编辑,按程序,输入英文O加四个随意的数字之后按EOB也就换行键,界面就显示为新的编程界面了。2.更换程序也就是说系统已经有了储存好的程序,那么按编辑,按英文O加你之前储存的程序号码,然后按EOB换行,就出现你想要的程序。

数控系统,是数字控制系统的简称,根据计算机存储器中存储的控制程序,执行部分或全部数值控制功能,并配有接口电路和伺服驱动装置的专用计算机系统。

可通过以下步骤更换无线网卡驱动程序:

1、如电脑上已安装了驱动人生的软件(未安装可通过百度搜索“驱动人生”下载安装到电脑),可打开驱动人生的软件,点击“驱动管理”,勾选无线网卡后点击“开始”进行备份;

2、点击“本机驱动”,查看可更换的无线网卡驱动程序,点击“重新安装”即可;

3、同时也可右击“计算机”,点击“管理”,选择“设备管理器”,点击“网络适配器”,选择对应的无线网卡驱动右击,选择“卸载”,将原先的无线网卡驱动程序卸载;

4、登陆电脑的官方网站,输入产品型号,下载相应的驱动,安装新的无线网卡驱动,按照提示 *** 作即可,待安装完成后重启电脑即可。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12137060.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存