MySQL升級過程中的一些心得-1
自己公眾號原文連結: https://mp.weixin.qq.com/s/k3sb-AqGXgx37zIrRVcktA
我查了一下9月7日的公眾號發過《 MySQL8升級遇到的各式各樣問題 》感興趣的去看看。最近還發現了一些新的。但是我總結來說,問題歸問題,但是全都不是資料庫的問題。
有人反饋說5.7升級到8以後個別功能寫入的時候失敗。很奇怪是個別功能,這些功能涉及的表有一個。報錯是寫入ERROR 1406 (22001): Data too long for column 。如圖。
這個比較明顯是長度不夠,問了一下這個是什麼欄位。回答是時間。第一感覺時間怎麼可能會出現超長?然後馬上想到一種情況,有些開發喜歡用字串代表時間(這是一個很不好的習慣,甚至可以說是錯誤的)。一看果然是字串。
而這個表其他時間欄位是標準的時間。可能是歷史原因吧。我一看欄位是varchar(19) 。典型的硬套。因為比如2021-12-22 21:47:52帶上空格就是19位。那麼我們模擬一下。
給時間欄位和字串欄位寫入同樣的資料。而且是一樣的函式。結果是一樣。也就是說即使資料型別用錯了,只要按照資料庫標準獲取時間的函式來做也沒有問題。那怎麼模擬呢?
第3條資料在22後面多加了一個空格。超長了。也就是說的確是多一位是寫不進去的。很奇怪的。那麼我們先擴一下欄位,看看會發生什麼吧?
欄位加到50以後,走一下程式邏輯,不報錯。寫入成功了,看了一下表在原有的時間後面加了.0 比如 2021-12-22 21:47:52.0 這都是為什麼?不知道,但是一定是框架或者是實現的時候選擇了非常規的方式去轉換。如果是用資料庫自帶的,即使資料型別錯誤也容錯了。但是遺憾的是,沒有這樣做。
上面的驅動典型的MySQL8
執行結果
即使用程式寫和用命令列寫是一樣的。
小結一下:一定要按照規範定義資料結構。而且用常規手段運算元據庫最佳。不要用花裡胡哨的轉換。原生是最好的。
明天打算說另外一個問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2849611/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL升級過程中的一些心得-2MySql
- 專案 Laravel 框架 5.1 升級到 5.5 過程中的一些問題Laravel框架
- synchronized升級過程synchronized
- 記升級 macOS Mojave 過程中的一件小事Mac
- 在K8S中,Deployment的升級過程是什麼?K8S
- 在K8S中,Deployment 升級過程有哪些?K8S
- mysql的升級MySql
- 升級 PHP7 過程記錄PHP
- 詳細瞭解 synchronized 鎖升級過程synchronized
- 記一次uboot升級過程的兩個坑boot
- Centos 7 升級通過 yum 安裝的 MySQL 5.7 到 MySQL 8.0CentOSMySql
- MySQL5.6升級5.7時,出現主從延遲問題排查過程MySql
- WSL 中學習 Laravel 過程中的一些配置Laravel
- 一場版本升級引發的效能血案的追凶過程
- 賽況直播 | 賽程過半,戰況升級
- MYSQL sql執行過程的一些跟蹤分析(一)MySql
- Apache DolphinScheduler 1.3.4升級至3.1.2版本過程中的踩坑記錄Apache
- SQL Server 2016升級遷移過程中效能問題解決案例SQLServer
- 嘗試 WebGPU 過程中掉的一些坑WebGPU
- java併發筆記四之synchronized 鎖的膨脹過程(鎖的升級過程)深入剖析Java筆記synchronized
- 京東二面:Sychronized的鎖升級過程是怎樣的Zed
- MySQL的session過程MySqlSession
- JAVA物件分析之偏向鎖、輕量級鎖、重量級鎖升級過程Java物件
- 將自己的站點升級成HTTPS的(瘋狂踩坑)過程HTTP
- 總結我在架構師升級過程中的那些坑以及各種體會架構
- MySQL:5.6 升級 5.7MySql
- mysql怎麼升級MySql
- 如果在一個過程中得到上級呼叫它的過程的資訊
- c3p0使用過程中的一些疑惑
- 爬蟲程式實現過程中的一些建議爬蟲
- MySQL儲存過程中如何使用ROLLBACKMySql儲存過程
- Docker升級MySQL版本的快速方法DockerMySql
- springboot升級過程中踩坑定位分析記錄 | 京東雲技術團隊Spring Boot
- MYSQL sql執行過程的一些跟蹤分析(二.mysql優化器追蹤分析)MySql優化
- MAC電腦升級後的一些BUGMac
- Mysql 儲存過程的使用MySql儲存過程
- MySQL 5.7 升級到 8.0MySql
- MySQL升級會變慢?MySql