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:ProgramDataMySQLMySQL Server 8.0my.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)