Tag: database
-
TablePlus 訂閱一年… 到期啦
忘了當初從哪裡得知 TablePlus 這個軟體的,只記得當時還是開發中的免費軟體。用起來還很陽春,但試用後覺得很有潛力。 後來 TablePlus 轉型成訂閱制的軟體,買了一年的服務。 TablePlus 最初是 macOS 上一款現代化的 Database 管理工具,支援 MySQL、Postgres、Oracle、Microsft SQL、SQLite 等多種關聯與非關聯式資料庫。輔以更親近新式的操作介面。現在也推出 Windows、Linux 版本了,連 Apple M1 處理器也有支援,開發團隊更新非常認真。 不過因為生活與工作環境的變化,我後來就有點少用這款了。這幾天剛好手上有個小 case 想用 MySQL 開發測試。又重啟了 TablePlus,然後發現金鑰即將在七天後過期… 有點難過,沒用夠本的感覺。 雖然續約只需要 39 鎂,但只能啟用一台電腦,對我來還是不太夠用。決定先不續約了。
-
Truncate all tables in Oracle database
今天開發團隊終於決定要把開發與測試用的 Oracle 資料庫清空重建了。在長達一年多的開發時間裡,這台測試 DB 是非常重要的開發工具。但長久以來承受了各式各樣亂七八糟的資料,也難以保證測試結果是否符合預期,所以大夥決定將它清空。 不過 Oracle 自己的 GUI 管理工具 SQL Developer 真是頗為難用。 想一次清空 (truncate) 是沒有全選 -> 右鍵 -> 清空 這麼方便的事。但是近百個 table 又不想一個一個清… 就下指令吧。 begin for t in (select table_name from user_tables) loop execute immediate ‘ truncate table ‘||t.table_name; end loop; end; 這樣完成清除資料表的任務。
-
Laravel Eloquent – Encrypt/Decrypt Data on call
在開發商業網站的時候,對資料加密是必要的手段,尤其是資料庫中關於會員隱私,或是商業機密的部份都要特別處理。 在實務上通常不會用資料庫內建的加密功能,而是用後端語言來實現 encrypt 與 decrypt,資料庫只儲存加密後的訊息。 在 Laravel 裡加解密可以透過繼承 Eloquent,用 magic function 來達成自動化。 class BaseModel extends Eloquent { protected $encrypt = []; public function setAttribute($key, $value) { if (in_array($key, $this->encrypt)) { $value = Crypt::encrypt($value); } return parent::setAttribute($key, $value); } public function getAttribute($key) { if (in_array($key, $this->encrypt)) { return Crypt::decrypt($this->attributes[$key]); } return parent::getAttribute($key); } public function attributesToArray()…
-
MySQL: 限制存取單一資料庫
從客戶那邊拿到一份巨大的資料庫備份,解壓縮後的 .sql 文字檔接近 1GB。由於檔案很大,想要編輯或檢視內容都很不方便,就想說直接匯進測試用的資料庫。用了 source 指令後成功地匯入了,當下看起來也很正常。不過後來只要重開測試主機就會出現完全連不上資料庫的情況,而且屢試不爽,推測大概是客戶連同紀錄資料庫自身狀態的 information_schema 也一併匯出了。 問了客戶的工程師才知道他們匯入時會加指令來限制匯到哪個資料庫。語法如下: mysql -u USERNAME -p PASSWORD –force –one-database DATABASE 登入 mysql 後再使用 source 匯入,此時若是碰到操作非指定 DB 的 statements 都會被自動略過。 總算順利搞定資料庫,繼續開發工作。又學到了一課。 後來去翻閱 MySQL 官方文件,其實只要加個 -o 就可以了,參考這篇。