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
- 打怪(githug)升級過程Git
- 記升級 macOS Mojave 過程中的一件小事Mac
- 一次系統升級的過程
- 在K8S中,Deployment 升級過程有哪些?K8S
- 在K8S中,Deployment的升級過程是什麼?K8S
- 升級 PHP7 過程記錄PHP
- Red Hat核心升級過程記錄
- mysql的升級MySql
- 詳細瞭解 synchronized 鎖升級過程synchronized
- oracle小版本升級patch過程和分析Oracle
- mysql升級MySql
- WSL 中學習 Laravel 過程中的一些配置Laravel
- 記一次uboot升級過程的兩個坑boot
- bitnami redmine版本由2.3.1升級至3.2.2過程
- 一場版本升級引發的效能血案的追凶過程
- 京東二面:Sychronized的鎖升級過程是怎樣的Zed
- MySQL5.6升級5.7時,出現主從延遲問題排查過程MySql
- Centos 7 升級通過 yum 安裝的 MySQL 5.7 到 MySQL 8.0CentOSMySql
- Fedora 1/ rh as 3 安裝oracle 9.2.0, 並升級到9.2.0.4詳細過程(轉)Oracle
- MySQL 5.6.27升級MySQL 5.7.18版本的升級步驟介紹MySql
- 我的MYSQL學習心得(10) : 自定義儲存過程和函式MySql儲存過程函式
- Mysql加鎖過程詳解(6)-資料庫隔離級別(1)MySql資料庫
- 嘗試 WebGPU 過程中掉的一些坑WebGPU
- Apache DolphinScheduler 1.3.4升級至3.1.2版本過程中的踩坑記錄Apache
- java併發筆記四之synchronized 鎖的膨脹過程(鎖的升級過程)深入剖析Java筆記synchronized
- 升級RH9.0到2.6.5核心全過程(轉)
- MYSQL sql執行過程的一些跟蹤分析(一)MySql
- JAVA物件分析之偏向鎖、輕量級鎖、重量級鎖升級過程Java物件
- mysql 觸發器/過程中的變數!!MySql觸發器變數
- 總結我在架構師升級過程中的那些坑以及各種體會架構
- MySQL的session過程MySqlSession
- 【mysql】配置MySQL,解決安裝過程中的問題MySql
- MySQL 升級的最佳實踐MySql
- mysql怎麼升級MySql
- MySQL:5.6 升級 5.7MySql