测试服运行正常,正式服无法存储
尝试了网上的方法
1、mysql链接后加 characterEncoding参数,无效
2、数据库字段原来也是utf8mb4改成了utf8mb4_unicode ,无效
最终有效果的是:
升级mysql依赖版本 从mysql-connector-java改成 mysql-connector-j的最新版,有效了。
有相似情况的可以试试
又一个WordPress站点
测试服运行正常,正式服无法存储
尝试了网上的方法
1、mysql链接后加 characterEncoding参数,无效
2、数据库字段原来也是utf8mb4改成了utf8mb4_unicode ,无效
最终有效果的是:
升级mysql依赖版本 从mysql-connector-java改成 mysql-connector-j的最新版,有效了。
有相似情况的可以试试
场景是阿里云rds1个实例有两个库,正式库和beta库。springboot 1.5.22 jpa 发现beta库自动建表正常,正式库只能更新无法创建新表。 两个库使用相同账号。
每次更新正式服都很被动。给源码打断点发现,正式服只会执行合并操作,并且检测到的是beta服的表,很诡异。主要是因为正式库和beta在一个实例里,然后账号权限可以访问两个库。可能是jpa有bug,会检登录测账号下的所有库,导致如果beta服已经创建了表,正式服在创建相同名字表时只会执行表合并不创建新表。
处理方式是拆分俩账号,每个账号只分配能访问一个库的权限就解决了。。
@Query("select sum(r.amount) from RechargeOrder r where 1=1 " + "AND (case when (:status is null) then true when(:status=r.status) then true else false end)=true " + "AND (case when (:walletType is null) then true when(:walletType=r.walletType) then true else false end)=true " + "AND (case when (:payType is null) then true when(:payType=r.payType) then true else false end)=true " + "AND (case when (:userId is null) then true when(:payType=r.userId) then true else false end)=true " + "AND (case when (:rechargeType is null) then true when(:rechargeType=r.rechargeType) then true else false end)=true " + "AND (case when (:successTimeBegin is null) then true when(:successTimeBegin<=r.successTime) then true else false end)=true " + "AND (case when (:successTimeEnd is null) then true when(:successTimeEnd>=r.successTime) then true else false end)=true " + "") Integer sumAmount( @Param("status") Integer status ,@Param("walletType") Integer walletType ,@Param("payType") Integer payType ,@Param("userId") Integer userId ,@Param("rechargeType") Integer rechargeType ,@Param("successTimeBegin") Date successTimeBegin ,@Param("successTimeEnd") Date successTimeEnd );
主要就两个 myisam 和 innodb
myisam这里有详细的例子:
http://hfhwan.iteye.com/blog/375611
总结:
没有事物,表锁,读写互斥的锁,锁只能锁当前session,不影响其他用户,适合读多于写的数据。
存在一个系统变量 concurrent_insert 允许并发插入的设置
innodb的例子:
http://blog.chinaunix.net/uid-24111901-id-2627857.html
总结:
有事务,可以行锁,行锁前提是有索引否则又变成了表锁,而且锁上别的session就影响了。适合写入修改多的情况。
锁是对索引加的,两个查询相同索引的内容也会有影响。。。
涉及到钱的用这个