遇到MySQL中on duplicate key update語句返回值不正確:
在server5.1.*的返回分別為insert=1,update=3,nochange=2
在server5.5.*的返回分別為insert=1,update=2,nochange=1
應返回:insert=1,update=2,nochange=0
使用mysql-connector-java-*.jar不當導致。修正為:jdbc:mysql://ip:port/db?useAffectedRows=true&…
useAffectedRows的含義 :是否用受影響的行數替代查找到的行數來返回數據,也就是查找到了 但卻不一定真正修改了
其他常見常用參數:
UsePerformanceMonitor,userperfmon, perfmon:是否啟用性能監視,默認 false
IgnorePrepare: 是否忽略 Prepare() 調用,默認 true
UseProcedureBodies,procedure bodies:是否檢查存儲過程體、參數的有效性,默認 true
AutoEnlist: 是否自動使用活動的連接,默認 true
TreatTinyAsBoolean:是否將 TINYINT(1) 列視為布爾型,默認 true
AllowUserVariables:是否允許 SQL 中出現用戶變量,默認 false
FunctionsReturnString:所有服務器函數是否按返回字符串處理,默認 false
UseAffectedRows:是否用受影響的行數替代查找到的行數來返回數據,默認 false
Keepalive: 保持 TCP 連接的秒數,默認0,不保持。
ConnectionLifeTime:連接被銷毀前在連接池中保持的最少時間(秒)。默認 0
Pooling: 是否使用線程池,默認 true
MinimumPoolSize, min pool size:線程池中允許的最少線程數,默認 0
MaximumPoolSize,max pool size:線程池中允許的最多線程數,默認 100
ConnectionReset:連接過期后是否自動復位,默認 false
CharacterSet, charset:向服務器請求連接所使用的字符集,默認:無