想寫一個自動測試專案中 Sql 是否正確的開源作品,大家有什麼建議嗎?

程式設計師 Chabuduo001 • at 2020-03-24 22:06:28 • 5 Views

為什麼會想做這個開源作品呢?

想法源於之前公司想把專案中 Oracle 資料庫換成 Mysql 資料庫,那麼在整體換完語法以後,怎麼確定所有的 Sql 能夠正常執行呢?所以就有這樣一個想法。想寫一個小工具能夠自動測試專案中的 Sql 語法是否正確,並且格式化輸出錯誤資訊。

Total: 21
  • levelworm 2020-03-24 22:06:28
    直接扔開發資料庫看返回錯誤。。。
  • xfriday 2020-03-24 22:06:28
    可以看看 rust 的 sqlx 庫
  • miaoever 2020-03-24 22:06:28
    這類系統最難的是不僅僅要保證語法的正確性, 而且要保證語義的正確性. 前者很簡單, 用支援 Mysql SQL 的 parser 去解析轉換後的 SQL 看是否符合語法. 但是後者-語義檢測很難.
  • msg7086 2020-03-24 22:06:28
    可能只對不用 ORM 的專案有用?
  • ebingtel 2020-03-24 22:06:28
    @msg7086 orm 也要轉成 sql……得看看 lz 想在哪個層面注入檢查了吧
  • Chabuduo001 2020-03-24 22:06:28
    @ebingtel 目前想法只針對使用 Mybatis 框架的,想在應用層面進行攔截,執行,捕獲異常、擷取錯誤資訊
  • aguesuka 2020-03-24 22:06:28
    idea 配置資料庫後,在 java 程式碼裡,sql 字串的前一句加上註釋 // language=sql
  • aguesuka 2020-03-24 22:06:28
    mybatis 的 xml 裡就更簡單了,idea 裡配置好資料庫有問題就會報錯
  • littlewing 2020-03-24 22:06:28
    inception
  • vanityfairn 2020-03-24 22:06:28
    我還想過,該怎麼去自動檢測慢 sql 。
  • huamiao 2020-03-24 22:06:28
    應該有一套自動化測試去測試產品,而且不是測試 SQL 的語法。(通常在把 SQL 寫進程式碼前開發總是會自己在 DB 工具裡試一下的吧,根本輪不到使用這樣一個工具去排錯)更何況如果遇到使用 command parameter 的情況,會造成工具的邏輯更加複雜。
  • Chabuduo001 2020-03-24 22:06:29
    @huamiao 正常開發肯定是開發在寫 sql 的時候就已經自己測過了,但是我的想法源於是在我們公司專案從 Oracle 遷移到 Mysql,所以第一步肯定先改語法,但是改完以後由於 Sql 特別多,所以就想開發層面搞一個工具自己測一下,看從 Oracle 語法改到 Mysql 語法對不對,總不可能自己一個一個 sql 跑吧。
  • qwerthhusn 2020-03-24 22:06:29
    方言問題很麻煩
    而且對於 group by 有那種 only_full_group_by 限制等等細節問題
  • huamiao 2020-03-24 22:06:29
    @Chabuduo001 正常做法是專案應該有自己的自動化測試,遷移完跑一遍自動化測試就結了。
    回到問題本身,如果你解決了 sql 提取規整的問題,大約向服務區傳送 EXPLAIN 請求可以來進行驗證吧。(完全是猜測,未在程式碼層面驗證過)
  • xcstream 2020-03-24 22:06:29
    感覺比較難還是要人肉功能測試
  • JoshuaJin 2020-03-24 22:06:29
    如果單純遷移的是 sql 可能還好些,我們現在遷移的是 Oracle 的儲存過程,也沒有很好的辦法~~
  • Chabuduo001 2020-03-24 22:06:29
    @JoshuaJin 哈哈,我們還沒到儲存過程這一步,因為剛把語法改過來,這個專案就黃了。 但是一直有這個想法。
  • xyjincan 2020-03-24 22:06:29
    定義一個不相容的關鍵字集合
  • aitaii 2020-03-24 22:06:29
    遷移儲存過程和觸發器的邏輯才是頭大,我司去年下半年花了 1 個月的時間由 Oracle 遷移到 Mysql 了,對應的效能也需要額外的優化。
  • wangxiyu191 2020-03-24 22:06:29
    這個說起來某雲有兩整套產品幹這個。。基本思路是流量映象然後對比。
  • purensong 2020-03-25 22:06:29
    小米有 soar 這個平臺可以檢測 SQL,我最近也有個想法就是去給這專案貢獻,新增一些常用 SQL 錯誤的改寫,提供修復變形 SQL 功能
Add a reply
For Commenting you need to Login. If you dont have a Account you need to Register.