資料庫設定來源

目的

整理兩個專案的 DB 設定來源與查詢規則。

這份文件不保存 DB host、帳號、密碼。

Redis 設定已獨立到 Redis。Redis 是 cache / lock / session / rate limit 來源,不要和 MySQL / relational DB 查詢規則混在一起。

pro360_api_82

主要來源:

Lib/Common/Configuration.php
docker/staging/Configuration.php
Lib/Common/DBFactory.php
Lib/Common/DBConfiguration.php
Lib/Common/DBConfigurationArray.php

常見 key 名稱:

DB_Server
DB_Server_Name
DB_DBName
DB_Port
DB_User_Name
DB_Password

DB 連線入口:

\PRO360\Common\DBFactory::get()

查 DB / schema 時,依 repo 規則使用容器 PHP 8.2:

docker exec -w /project-data cd63f9147e8d php -r 'require "vendor/autoload.php"; $db=\PRO360\Common\DBFactory::get(); /* query */'

不要:

  • 用本機 PHP 直接查 pro360_api_82 DB
  • 手動 require Lib/Common/Configuration.php
  • 沒查 schema 就猜欄位

get-lancer-php56

主要來源:

app/Config/database.php

常見 connection name:

default
master
slave / replica 類 connection

legacy CakePHP 會透過 datasource / model 使用這些 connection。比對 legacy 行為時,先確認該 model 是否有指定 datasource 或使用預設 connection。

比對新舊 DB 行為時

  1. 先確認兩邊是否指向同一份資料庫或 replica。
  2. 只記 connection name 與檔案來源,不記密碼。
  3. schema 查詢先查欄位,再查資料。
  4. 如果是 search_add baseline,優先使用專案既有 script 或文件規則,不要手刻大 SQL。