mysql - Int 值在数据库中存储为空字符串,尝试将新值设置为旧值会产生“无法将字符串转换为 int”问题
问题描述
我有一个表单,它允许用户不输入 customer_no 的值,它是一个 int 值。我认为它作为空字符串存储在数据库中?
这是专栏 customer_no INT(11) NULL,
为什么会这样存储?我正在尝试创建一个触发器,用于当值为 null 或 '' 时使用存储的旧值。但是它有无法将字符串转换为int的错误。有什么帮助吗?这是触发器主体
IF NEW.customer_no IS NULL OR NEW.customer_no= ''
THEN SET NEW.customer_no= OLD.customer_no;
END IF;
[字段'customer_no'上的对象'form'中的字段错误:拒绝值[];代码 [typeMismatch.form.customer_no ,typeMismatch.customer_no ,typeMismatch.int,typeMismatch]; 参数[org.springframework.context.support.DefaultMessageSourceResolvable:代码[form.customer_no,customer_no];论据 []; 默认消息 [customer_no]];默认消息 [无法将类型“java.lang.String”的属性值转换为属性“customer_no”所需的类型“int”;嵌套异常是 java.lang.NumberFormatException: For input string: ""]] `
我正在使用 springboot 和 jdbc 查询从表单中获取信息并更新数据库,但是当值为空(而不是整数值)时,它会显示此错误。我希望用户可以选择不为此字段输入值,如果他们想更新其他字段,并且仍然保留之前为这个特定字段输入的旧值。
例如,如果先前输入的 customer_no 在数据库中为 5,并且用户更新了数据库中的另一列并且没有为此字段输入值,则触发器应使用存储的旧值 5 而不是 null,但它显示“无法将字符串转换为诠释”
希望这有点道理
谢谢
解决方案
将接收表单的类中的字段从 int 更改为 Integer。然后它应该得到一个空值,我认为这就是你所追求的。
推荐阅读
- python - 为什么 geopandas 在使用 sjoin 函数时将多边形数据类型更改为 str?
- php - Content-Length 标头正确,但当 headers+body = content-length 时下载工具停止
- flutter - 飞镖冻结转换为另一种数据类型
- php - 固定多对一的 symfony
- python - discord.py 错误,同时给一个人一个静音的角色
- java - AWS-ECS 部署得到 404 NOT FOUND
- c++ - IBUS-警告**:19:51:34.312:创建输入上下文失败:达到超时wxWidgets
- reactjs - 检测设备的输入键 IonSearchBar
- javascript - 为什么反应组件内部的功能不起作用?
- postgresql - 无法在 WSL Arch 上启动 postgresql