超出数据类型表达范围的值没有被截断

超出数据类型表达范围的值没有被截断

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

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

2回答
提问者 荒小北158 2018-03-16 14:38:50
CREATE TABLE test_int(
 a tinyint,
 b smallint,
 c mediumint,
 d int,
 e bigint
);

test_int 是这样的

  • tinyint 的范围不是 -128~127 吗,你那个 -129 超出范围了啊,肯定报错呀。难不成你以为它会自动给你截断成 -128?。。。
    2018-03-16 16:59:29
  • 提问者 荒小北158 回复 慕先生9167426 #2
    但是视频里面老师操作会报一个warning啊 老师输入的就是-129 自动截断为128
    2018-03-16 22:20:32
  • 慕先生9167426 回复 提问者 荒小北158 #3
    倒回去看了视频,还真是有这个操作。。。后来我上网查了一下,应该是老师他把mysql的“严格模式”关闭了的原因,默认是开启的。你在mysql中执行: set global sql_mode=''; 就可以关闭严格模式了,查看mysql模式:select @@mysql_mode; 我试过了,关了严格模式就会自动截断数据。
    2018-03-17 08:58:22
慕先生9167426 2018-03-16 11:21:10

你执行那条语句后下面不是报错了嘛,超出范围了,所以那条语句都没有插入值成功,当然就没有截断。截断数据会提示警告,而不是抛出错误。

  • 提问者 荒小北158 #1
    好吧,谢谢 ...那我这样插入错在哪了?
    2018-03-16 11:53:22
  • 慕先生9167426 回复 提问者 荒小北158 #2
    没看到你的 test_int 的源代码,我也不知道的呀。。。
    2018-03-16 14:17:12
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
Java数据库开发与实战应用2018版
  • 参与学习           人
  • 提交作业       277    份
  • 解答问题       4297    个

Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!

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

在线咨询

领取优惠

免费试听

领取大纲

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