久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySql超長自動截斷的示例分析

129次閱讀
沒有評論

共計 2678 個字符,預計需要花費 7 分鐘才能閱讀完成。

這篇文章主要介紹了 MySql 超長自動截斷的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓丸趣 TV 小編帶著大家一起了解一下。

如下

CREATE TABLE `p_app_station` ( `WX_APP_ID` varchar(20) NOT NULL,
 `APP_SECRET` varchar(33) DEFAULT NULL,
 `IS_BINDING` int(1) DEFAULT  0 ,
 `ACCOUNT_ID` int(13) DEFAULT NULL,
 `TOKEN` varchar(40) DEFAULT NULL,
 `BIND_URL` varchar(200) DEFAULT NULL,
 `WX_APP_NAME` varchar(50) DEFAULT NULL,
 `WX_APP_SID` varchar(50) DEFAULT NULL,
 `WX_NO` varchar(50) DEFAULT NULL,
 `CREATE_USER_ID` varchar(13) DEFAULT NULL,
 `UPDATE_DATE` datetime DEFAULT NULL,
 `CREATE_DATE` datetime DEFAULT NULL,
 `UPDATE_USER_ID` varchar(13) DEFAULT NULL,
 `STATION_TYPE` int(1) unsigned zerofill DEFAULT NULL COMMENT  標記類型(試用版:0, 會員版:1, 定制版:2),
 `ACTIVE_DATE` datetime DEFAULT NULL COMMENT  使用時間截止 ,
 `APP_MODULE_ID` varchar(60) DEFAULT NULL COMMENT  推送模版消息 ID ,
 PRIMARY KEY (`WX_APP_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
insert into p_app_station(wx_app_id) values( 12121312312312 啊啊啊啊啊 aassasdasd 
select * from p_app_station where wx_app_id like  12121312312312%

很明顯 varchar(20) 不足以容納 12121312312312 啊啊啊啊啊 aassasdasd

查詢結果如下

確實自動截斷了,但是在項目中執行同樣的 sql 發現并非如此,反而報錯。

Data truncated for column  %s  at row %ld

考慮到是同一個數據庫,不存在模式不同,那么可能性應該出現在 jdbcDriver 上。

查看 jdbc 源碼

private void setupServerForTruncationChecks() throws SQLException { if (getJdbcCompliantTruncation()) { if (versionMeetsMinimum(5, 0, 2)) {
 String currentSqlMode = this.serverVariables.get( sql_mode 
 
 boolean strictTransTablesIsSet = StringUtils.indexOfIgnoreCase(currentSqlMode,  STRICT_TRANS_TABLES) != -1;
 
 if (currentSqlMode == null || currentSqlMode.length() == 0 || !strictTransTablesIsSet) {
 StringBuilder commandBuf = new StringBuilder( SET sql_mode= 
 
 if (currentSqlMode != null   currentSqlMode.length()   0) { commandBuf.append(currentSqlMode);
 commandBuf.append( , 
 }
 
 commandBuf.append( STRICT_TRANS_TABLES 
 
 execSQL(null, commandBuf.toString(), -1, null, DEFAULT_RESULT_SET_TYPE, DEFAULT_RESULT_SET_CONCURRENCY, false, this.database, null, false);
 
 setJdbcCompliantTruncation(false); // server s handling this for us now
 } else if (strictTransTablesIsSet) {
 // We didn t set it, but someone did, so we piggy back on it
 setJdbcCompliantTruncation(false); // server s handling this for us now
 }
 
 }
 }
}

查看 getJdbcCompliantTruncation 方法,其默認值為

private BooleanConnectionProperty jdbcCompliantTruncation = new BooleanConnectionProperty( jdbcCompliantTruncation , true,
 Messages.getString(ConnectionProperties.jdbcCompliantTruncation),  3.1.2 , MISC_CATEGORY, Integer.MIN_VALUE);

因此從 3.1.2 版本在 jdbcurl 中如果沒有設置 jdbcCompliantTruncation 那么默認將會執行不截斷并且報錯。

那么加上參數是否可以呢?

取舍一下:

如果截斷當出現比超長可能會有精度丟失的風險。

因此建議還是在程序中檢查。

目前正在做關于使用 hibernate validate 的相關。

感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享的“MySql 超長自動截斷的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,更多相關知識等著你來學習!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計2678字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 绥芬河市| 拜城县| 石嘴山市| 淮阳县| 乌苏市| 大足县| 昂仁县| 阿拉善盟| 德清县| 石渠县| 绥棱县| 陆河县| 永靖县| 吴忠市| 江陵县| 芮城县| 丹棱县| 应用必备| 库伦旗| 亳州市| 五原县| 深泽县| 南乐县| 个旧市| 崇义县| 曲阳县| 衡山县| 绍兴市| 罗山县| 雅安市| 南漳县| 安化县| 台中县| 台安县| 治多县| 青海省| 阿拉尔市| 阜新市| 新郑市| 平利县| 垣曲县|