老师,我想问一个关于数据库的问题

老师,我想问一个关于数据库的问题

1.当我在mysql中输入这样一段话之后,就会出现如下错误,我在网上找了很多方法都没解决

CREATE TABLE test_three(
`id` INT UNSIGNED AUTO_INCREMENT KEY COMMENT '用户编号',
`price` FLOAT(8,2) UNSIGNED NOT NULL DEFAULT 0,
`num` INT UNSIGNED NOT NULL DEFAULT 100
)ENGINE=INNODB ,CHARSET=UTF-8;

http://img1.sycdn.imooc.com//climg/5cbad9610001715912230639.jpg

2.当我输入下列内容则会出现这个错误,也不知道是为什么,拜托老师帮我看一下

SELECT id,username,age,sex,addr FROM user1
GROUP BY sex;

http://img1.sycdn.imooc.com//climg/5cbad9fd0001e4aa19201042.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

4回答
吃吃吃鱼的猫 2019-04-20 19:32:19

同学你好,按照错误提醒,将sql_mode中的NO_AUTO_CREATE_USER去掉,语句如下:

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

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

提问者 造梦大师 2019-04-20 19:24:09
吃吃吃鱼的猫 2019-04-20 19:20:36

同学你好,sql_mode是mysql数据库的一个环境变量,定义了msyql应该支持的sql语法,数据校验等。一般情况下,我们不需要去知道它在哪里。

如果想要查看其中的内容,可以通过以下方式查看当前数据库使用的sql_mode:

    use 数据库名;

    select @@sql_mode;

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 造梦大师 #1
    老师你看下我输入您给我的那段代码还是报错
    2019-04-20 19:24:49
吃吃吃鱼的猫 2019-04-20 17:53:51

同学你好,第一个问题,编码方式写为utf8,而不是utf-8。http://img1.sycdn.imooc.com//climg/5cbae8c600015fc706700193.jpg

第二个问题

ONLY_FULL_GROUP_BY的意思是:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,也没有出现在聚合函数里面,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现。否则就会报错。

同学可以在之前执行这段代码,将ONLY_FULL_GROUP_BY从sql_mode中去掉:

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';

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 造梦大师 #1
    请问sql_mode在哪呢?
    2019-04-20 18:00:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师