我写了一个建表语句如下所示:
CREATE TABLE IF NOT EXISTS `user`(
id int NOT NULL auto_increment PRIMARY KEY ,
`name` VARCHAR(64) NOT NULL DEFAULT '',
gender int NOT NULL DEFAULT '0' COMMENT '0男性,1女性',
telphone VARCHAR(13) NOT NULL DEFAULT '',
register_mode VARCHAR(13) NOT NULL DEFAULT '', COMMENT 'byphone bywechat byalipay'
third_party_id VARCHAR(64) NOT NULL DEFAULT ''
)comment = '用户信息结构' DEFAULT CHARSET=utf8;
在执行后,会报
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
但是表是可以成功建立的,但是也可以对表进行操作,但是在Navcat for MySQL的可视化界面下就是不显示它。
搜了一下,找到了解决方式
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
原因是:对于group by聚合操作,如果在select中的列没有在group by中出现,那么这个SQL是不合法的,因为列不在group by从句中,所以设置了sql_mode=only_full_group_by的数据库,在使用group by时就会报错
不在可视化列表中显示的问题,重启下Navcat就行了。