mysql 一直提示ERROR 1067: Invalid default value for 'product

[复制链接]
查看11 | 回复9 | 2021-1-27 05:17:21 | 显示全部楼层 |阅读模式
有两张表,A表有product_id和product_name这两个字段,且这两个字段都是本来已有数据;
B表也有同样的两个字段,但是B表的product_id一开始为空,需要通过匹配A表的product_name来得到数值;
我打算用mysqlforexcel导入数据到A表,导入的时候,A表就自动去B表匹配得到product_id的数据;
我在workbench是这么设置的;


但是这么报错的:



尝试了多种方法:
包括删掉sql-mode的strict_trans_tables,都没用。
请教一下大神这个问题要如何解决?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
product_id是主健,插入数据行的时候不能为空。
你可以先把主键标示删除,等数据录入完毕之后,再设为主键
回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
你好,我试过取消设置主键、取消非空,都还是一样的报错。昨晚我换了另外一个语法,结果报了另外一种错误。如下图:





回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
你这SQL是要干嘛?又改表结构又插数据的,语句也没间断,插入也没列名,我看着像库名、表名、列名串在一起用,乱七八糟的
回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
这是要实现什么目的呢?
是把这一长长的字符串做为默认值,还是把这个查询的结果做为默认值呢?
回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
我是做电商运营的,每天的数据太多,没办法自学mysql


编辑数据库我用mysqlworkbench,不是用cmd。
业务场景是这样的:
有2张表,第一张表,产品信息表里面有产品id和产品标题这两个字段,这张表是人工维护的,这两个字段的信息都是全的。
第二张表,业务数据表,也有产品id和产品标题这两个字段,但是表一开始只有产品标题有数据,需要通过sql去第一张表里获取对应的产品id。(类似excel的vlookup功能)
所以我就在第二张表的产品id这个字段里加sql语句。
但我刚才百度了下,好像mysql的字段的默认值无法设置为sql语句?不知道有什么技术方案可以解决这个问题。
难点在于产品标题基本每天都会发生变化,所以第一张表是替换更新的。预期实现的效果是:每天早上首先更新第一张表,然后把第二张表导入mysql,导入的时候第二张表就去第一张表获取产品id数值。
按这种预期,第一张表的产品id是UQ;第二张表的产品id不是UQ,因为第二张表是要用来存放每天的业务数据,每天都有相同产品id的记录。
不知道通过添加triggers是否能实现?
谢谢大神。


回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
用triggers监听第二张表的insert语句,然后在里面写逻辑取获取第一张表的id之后再插入就好了
回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
要实时就用触发器,否则先导进去,再update。
回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
谢谢大神,用triggers已经实现了单条记录导入,还在研究如何一次导入多少条数据(导入多条会报error1072,resultconsistedofmorethanonerow)
CREATEDEFINER=`pilotsea`@`%`TRIGGER`update_productid`BEFOREINSERTON`product_data`FOREACHROWbegin
DECLAREnew_product_idVARCHAR(50);
SELECTproduct_idinfointonew_product_idfromproduct_infoiwherei.product_name=new.product_name_data;
setnew.product_id=new_product_id;
end
triggers这样写,不知道是不是有些地方要改一下。
回复

使用道具 举报

千问 | 2021-1-27 05:17:21 | 显示全部楼层
new里面应该都是单条数据吧,多条的话那逻辑得大改了
要么就是查询的表数据一对多了,SELECTpropduct_idinfointonew_product_id这里,查出来的结果不止一个赋给变量了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行