猿码叔叔 2024-03-12 16:45 采纳率: 50%
浏览 5

Error Code: 1064. value[123456] is empty or length is less than 8

问题描述:
我在 MySQL Workbench 8.0 CE 执行如下SQL,就报 Error Code: 1064. value[123456] is empty or length is less than 8。这个问题,其实我们已经有了端倪,就是输入 batch_no 的内容长度超过 7 就行,也就不会报错。但问题最关键的是,我们还有另外一个表,这个表中同样有“batch_no” 这个字段,且同样设置了 b-tree 索引,唯一的区别是那个表对该字段进行了非空限制。奇怪的是我们在那个表执行如下SQL就不会报错。目前在全网也没搜到解决方案,欢迎解答

select  * FROM xxx WHERE batch_no = '123456' and REMARK3 = '00000000F6724BFC8FE12A27E0530100007F219E‘

字段设计:

`batch_no` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL COMMENT '批次号',

KEY `xxxx_batch_no` (`batch_no`) USING BTREE
  • 写回答

5条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-12 16:46
    关注

    引自免费微信小程序:皆我百晓生

    在MySQL中,错误代码1064通常意味着SQL语句的语法有误。但是从您提供的信息来看,错误提示"Error Code: 1064. value[123456] is empty or length is less than 8"并不是标准的MySQL错误信息格式,这可能源自于应用层或自定义的约束检查。

    然而,根据您的SQL查询和字段设计,batch_no字段要求至少为8个字符长度,而您提供的'123456'显然不足8位。同时,REMARK3字段的值是一个很长的字符串,且看起来像是某种编码或者十六进制数据。

    针对batch_no字段的长度问题,请确保输入的数据满足字段定义的要求,例如:

    select * FROM xxx WHERE batch_no = '12345678' AND REMARK3 = '00000000F6724BFC8FE12A27E0530100007F219E';
    

    如果实际场景下'123456'是正确的批次号,但必须保证至少8位,则可以考虑在查询时使用 LPAD() 函数补足空格到8位:

    select * FROM xxx WHERE LPAD(batch_no, 8, '0') = '00012345' AND REMARK3 = '00000000F6724BFC8FE12A27E0530100007F219E';
    

    不过,若该错误消息确实来自于某个自定义的约束或触发器,那么需要查看具体的约束或触发器定义来找出问题所在,并针对性地修改或调整数据以符合其规则。

    评论 编辑记录

报告相同问题?

问题事件

  • 修改了问题 3月12日
  • 修改了问题 3月12日
  • 创建了问题 3月12日

悬赏问题

  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥20 spring boot集成mqtt的使用问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络
  • ¥66 关于川崎机器人调速问题
  • ¥15 winFrom界面无法打开
  • ¥30 crossover21 ARM64版本安装软件问题
  • ¥15 mymetaobjecthandler没有进入
  • ¥15 mmo能不能做客户端怪物
  • ¥15 osm下载到arcgis出错