mysql问题汇总——持续更新

1.this is incompatible with sql_mode=only_full_group_by

set @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

2.表“TableDetails”中列“IsPrimaryKey”的值为 DBNull

set global optimizer_switch='derived_merge=off';
set optimizer_switch='derived_merge=off';
如果执行到此处仍然无效,重启mysql再次执行即可,多次亲测有效

 3.navicat设置外键保存后消失

设置数据库引擎为InnoDB

 4.MySQL8.0 Authentication method 'caching_sha2_password' not supported by any of the available plugins.

修改默认的配置文件
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
default_authentication_plugin=mysql_native_password
修改密码并重启服务
ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则 
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root'; #更新一下用户的密码 
FLUSH PRIVILEGES; #刷新权限 

 

 5.变量赋值

用户变量,在客户端链接到数据库实例整个过程中用户变量都是有效的。

MySQL中用户变量不用事前申明,在用的时候直接用“@变量名”使用就可以了。 

第一种用法:set @num=1; 或set @num:=1; //这里要使用set语句创建并初始化变量,直接使用@num变量 

第二种用法:select @num:=1; 或 select @num:=字段名 from 表名 where ……, 

select语句一般用来输出用户变量,比如select @变量名,用于输出数据源不是表格的数据。

注意上面两种赋值符号,使用set时可以用“=”或“:=”,但是使用select时必须用“:=赋值”

 6.MYSQL5.7版本sql_mode=only_full_group_by问题

1、关闭only_full_group_by 模式
2、使用any_value(field)允许非分组字段出现
select count(*) as num,any_value(a.name)

 

posted @ 2017-12-05 22:20  Hey,Coder!  阅读(229)  评论(0编辑  收藏  举报