麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
896
2023-04-19
项目适 ***改造及SSL安全性配置问题汇总详解
背景
项目开发初期使用 MySQL ,后期需要适配 *** ,总结适配过程及多数据库支持时,从开发初期就需要考虑的几点。
另外,总结几点最近半年开发过程中的技术问题。坑都填了,也该是时候记录一下填坑的经过了,要不然下次可能还会踏入同一个坑。
*** 适配点
表名称长度限制,支持 *** 12C 以下是需要考虑 30个字符的限制。 *** 关键字 USER 不能乱用做别名.跟 MySQL 不一样,*** 有一张特殊的用户表名称就是 USER。 *** 没有默认转义符号,支持模糊查询时,需要手动编写查询语句指定 ESCAPE 字符。这点 MyBatisPlus 插件的模糊查询爱莫能助,所以还是需要自定义模糊查询 SQL。好在 MySQL 和 *** 的 ESCAPE 语法是是一样的,可以统一。此外字符串连接函数 CONCAT 也应该以 *** 为主,只能有两个参数。 *** 的字段长度,一个中文的长度是2,这点与 MySQL 不一样。可变长度、允许输入中文的字段,都需要自动扩大到 MySQL 的 2 倍长。 *** 的 null 值插入或者更新时的异常问题,可以通过 MyBatisPlus 的全局配置 jdbc-type-for-null: 'null' 统一解决。 *** 区分大小写的,SQL 语法中注意小写是否真的是小写,如果是,需要加引号转义。 MySQL 的 text 或者 LongText 字段,对应 NCLOB VS VARCHAR(4000),有些特殊字段需要超长字符的,有个四千的边界,超过就需要用 NCLOB 类型。
其他低级错误
有些低级错误,比如:
yml 配置冒号后面要有空格,特殊字符用单引号。 IDEA 将普通 Java 工程导出可执行 jar 的时候,MANTIFET 清单文件生成的目录必须放在 src 下面,否则打包生成的文件执行时找不到主类。 迭代器遍历的正确用法是 while(it.hasNext) 而非 if ,后者只会执行一次。再次印证了一句经验:不要相信拷贝来的代码,除非经过了你的测试。 精度丢失问题,一个简单的计算指定周期的时间戳的代码,未考虑精度问题而溢出:
?
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。