1、字段名可以加特殊符号吗?可以
比如字段名是name;
crate table tb(`name;` string)
2、mysql 错误对比
插入数据
报错:
1)需要13个参数,但是query只提供了12个
占位符有13个,但数据源只提供了12个字段
2)Column count doesn't match value count at row 1
列数目和所要插入的值的个数不匹配
说白了就是人家有13个字段,但是你多insert into的时候,多给了值或者少给了值
我当时是,表字段有id主键,自增的。
我以为不需要插入,但是我有个固定值
比如字段为
id,isvalid,name,age
我的语句是
insert into tb values(1,?,?)====>insert into tb values(1,'tom',18)
它可能是将我的1固定值给当成了id,所以我提供了3列值,但是它有4列
正确写法:给出确切的列名,不要省略,只有当全列名插入的时候,才可以省略
insert into tb (isvalid,name,age) values(1,?,?)
3)No value specified for parameter 5
这里是说它需要五个参数,你有一个参数没有,这个时候仔细检查下,源表字段和数据,一般是漏掉字段或者字段没有为null
3、特殊符号处理
导数据到mysql时,有些内容,是客户输入的emoji表情,一般数据库编码为utf8格式的
这种不能很好支持,所以导数据会报错,可以更改数据库编码、数据表、数据字段为utf8mb4、
这种变动需要更改mysql,重启mysql对生产业务影响还是蛮大的
或者跟业务沟通好,符号表情 征得业务同意可进行替换,将特殊符号替换掉:替换的语句是:
regexp_replace(title,'[^A-Za-z0-9_,?.。,?;;\\\u4e00-\\\u9fa5]','')
4、distinct 去重
select distinct id,name,age
是按照id、name、age同时一样,再进行去重,不是按照id去重,取id、name、age
5、windows上写的脚本,要改一下编码unix,utf-8 无bom格式的,不然放到linux上执行会报错
比如符号出错什么的
6、character '' not supported here
检查脚本文件编码unix,utf-8 无bom格式
把脚本复制到notepad++中,视图-显示符号-显示空格和制表符
正常空格会显示为红色的· 而不是其他的,仔细检查有无特殊符号
还可以显示其他或者全部的符号,进行仔细检查
7、插入(更新)为json字符串字段的属性
主键若存在,则更新,
主键若不存在,则插入。
insert into student values('102','hgc','28',CONCAT('{"attr2":','"18-19"}'))
ON DUPLICATE KEY UPDATE pro=json_set(pro,'$.attr2','30-35')
移除属性:
update student set pro = json_remove(pro,'$.attr2') where id='102'
8、实践为王道
实践是检验真理的唯一标准
当需求来临时,不会不要慌,没做过不要急
弄清楚需求,源数据、目标数据、原始现象、结果现象
现有资源,所缺资源
当问你能不能做出来,会的话说能当然很好,不会也不要说不能
试着说:我先根据你提供的资料或者需求,进行一下方案设计
之后给你一个回复~
当不确定结果的时候,就以实践证明,实际得出结论。