Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
## [Unreleased]

### 🚀 新增功能
- **MySQL/MariaDB 同引擎新舊版邏輯搬移**:開放 MySQL Community 8.0 ↔ 8.4、MariaDB 官方 binary 10.11 ↔ 11.4 的既有 BIGINT/LONGTEXT/LONGBLOB、整數主鍵及普通索引子集。核對完整版本與引擎標記,保留 MySQL 固定 PRIMARY 和表內索引名稱;仍用專屬 staging、內容校驗及單次發布,不允許 MySQL ↔ MariaDB 或未知 fork。版本選項與預覽一致,發版繼續暫停。
- **MySQL/MariaDB ↔ PostgreSQL 受控邏輯搬移**:加入 signed BIGINT、LONGTEXT NO PAD binary/text C、LONGBLOB/bytea、整數單欄/複合主鍵與具名普通索引。MySQL 8.4/MariaDB 11.4 目標用本輪 staging、分批 DML 交易、schema/SHA256 校驗後單次 RENAME 發布並再次驗證,不假稱 DDL 可完整回滾。失敗/取消列出殘留物件,發布結果不明禁止盲重試,不自動刪除。其他型別、文字前綴鍵、自訂 PK 名稱與相依物件明確拒絕;仍不是任意引擎/版本無損搬移,發版繼續暫停。
- **MySQL/MariaDB 同引擎新舊版邏輯搬移**:開放 MySQL Community 8.0 ↔ 8.4、MariaDB 官方 binary 10.11 ↔ 11.4 的既有 BIGINT/LONGTEXT/LONGBLOB、整數主鍵及普通索引子集。核對完整版本與引擎標記,保留 MySQL 固定 PRIMARY 和表內索引名稱;仍用專屬 staging、內容校驗及單次發布,不允許 MySQL ↔ MariaDB 或未知 fork。版本選項與預覽一致。
- **MySQL/MariaDB ↔ PostgreSQL 受控邏輯搬移**:加入 signed BIGINT、LONGTEXT NO PAD binary/text C、LONGBLOB/bytea、整數單欄/複合主鍵與具名普通索引。MySQL 8.4/MariaDB 11.4 目標用本輪 staging、分批 DML 交易、schema/SHA256 校驗後單次 RENAME 發布並再次驗證,不假稱 DDL 可完整回滾。失敗/取消列出殘留物件,發布結果不明禁止盲重試,不自動刪除。其他型別、文字前綴鍵、自訂 PK 名稱與相依物件明確拒絕;仍不是任意引擎/版本無損搬移。
- **邏輯搬移的文字、主鍵與索引子集**:SQLite STRICT ↔ PostgreSQL 保留有效 UTF-8 TEXT(BINARY/C)、明確非自增單欄/複合主鍵、普通升冪索引與欄位順序。預覽包含索引 DDL,來源變更失效、取消、缺索引或內容不符仍整批回滾;FK、其他定序、default、identity、特殊索引依舊預檢拒絕,不宣稱所有跨引擎組合完成。
- **可驗證邏輯搬移的第一階段**:SQL Server 專用相容工具加入受限雙向跨版本;Avalonia 新增 SQLite STRICT ↔ PostgreSQL 的整數/二進位搬移,預覽來源/目標版本、schema/data 轉換與阻擋原因,確認後才寫入另建空目標。單一交易、分批、內容校驗與不確定狀態禁止重試,不將一般資料傳輸或原生備份宣稱為無限制跨版本/跨引擎還原。

Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,11 @@ Windows 完整版介面支援繁體中文與英文;資料庫密碼、SSH 密

目前發版版本:`v1.0.0.22`,最新版請看 [GitHub Releases](https://github.com/shadowjohn/mySQLPunk/releases)。

未發版的可驗證邏輯搬移:Windows SQL Server 專用工具支援 2016–2025 受限雙向跨版本;Avalonia「邏輯搬移」提供 SQLite STRICT ↔ PostgreSQL 的 INTEGER/bigint、BLOB/bytea、UTF-8 TEXT(BINARY/C)、非自增單欄/複合主鍵及普通升冪索引子集,使用單一交易與結構/內容校驗。
可驗證邏輯搬移:Windows WinForms SQL Server 專用工具支援 2016–2025 受限雙向跨版本;Linux/macOS Avalonia「邏輯搬移」提供 SQLite STRICT ↔ PostgreSQL 的 INTEGER/bigint、BLOB/bytea、UTF-8 TEXT(BINARY/C)、非自增單欄/複合主鍵及普通升冪索引子集,使用單一交易與結構/內容校驗。

另已加入 MySQL Community 8.0/8.4、MariaDB 官方 binary 10.11/11.4 ↔ PostgreSQL,以及 MySQL 8.0 ↔ 8.4、MariaDB 10.11 ↔ 11.4 同引擎新舊版的 signed BIGINT、LONGBLOB/bytea、LONGTEXT utf8mb4 NO PAD binary/text C 子集,主鍵與普通索引只允許整數欄。MySQL 目標先建立本輪專屬 staging、交易分批寫入/校驗,再單次 RENAME 發布並重新校驗;DDL 隱含提交,失敗可能留下 staging,發布結果不明時禁止盲重試,不自動刪除或聲稱完整回滾。

所有路徑只接受另建空目標與明確確認;FK、default、identity、其他定序、時間與未忠實轉換的功能在預檢阻擋。PG 自訂主鍵名稱往 MySQL、MySQL 配對的文字/binary 索引鍵等限制另見矩陣。實機證據限 PG16.15 ↔ MySQL8.4.11/MariaDB11.4.13、MySQL8.0.46 ↔ 8.4.11、MariaDB10.11.19 ↔ 11.4.13、PG17.10 ↔ 14.24/16.15 及各自的合成 fixture,不代表全部版本或 schema。MySQL ↔ MariaDB、其他 MySQL/MariaDB 配對與 SQL Server 跨引擎轉換仍未開放,不宣稱整體完成或任意引擎/版本的原生 restore;版本與發布維持 hold。支援方向與實機/mock 證據區分見 [搬移矩陣](docs/LOGICAL_MIGRATION_MATRIX.md)。
所有路徑只接受另建空目標與明確確認;FK、default、identity、其他定序、時間與未忠實轉換的功能在預檢阻擋。PG 自訂主鍵名稱往 MySQL、MySQL 配對的文字/binary 索引鍵等限制另見矩陣。實機證據限 PG16.15 ↔ MySQL8.4.11/MariaDB11.4.13、MySQL8.0.46 ↔ 8.4.11、MariaDB10.11.19 ↔ 11.4.13、PG17.10 ↔ 14.24/16.15 及各自的合成 fixture,不代表全部版本或 schema。MySQL ↔ MariaDB、其他 MySQL/MariaDB 配對與 SQL Server 跨引擎轉換仍未開放,不宣稱任意引擎/版本的原生 restore 或無損轉換。支援方向與實機/mock 證據區分見 [搬移矩陣](docs/LOGICAL_MIGRATION_MATRIX.md)。

目前的 `v1.0.0.22` GitHub Release 同時提供 Windows x64 完整版 setup、self-contained Linux x64/ARM64 安裝壓縮檔,以及 macOS Intel/Apple Silicon `.app.zip`。Linux 壓縮檔內附使用者層級的 `install.sh`/`uninstall.sh`;macOS 預覽目前採 ad-hoc 簽署、尚未 Apple notarize。每個跨平台資產都有獨立 `.sha256` 可驗證完整性。完整變更請見 `CHANGELOG.md`。

Expand Down
2 changes: 1 addition & 1 deletion docs/FEATURE_NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
- MySQL Community 8.0.x/8.4.x、MariaDB 官方 binary 10.11.x/11.4.x 同家族搬移沿用來源鎖定、完整 catalog/DDL 檢查、byte-aware batching、專屬 staging、schema/SHA256 校驗與單次 RENAME;沒有把 DDL 隱含提交改稱完整交易回滾。
- 實際 8.0.46 ↔ 8.4.11、10.11.19 ↔ 11.4.13 各 1007 列+空表,含整數複合 PRIMARY、nullable bigint 普通索引、UTF8/emoji/NULL/空 text/binary 及 Int64 極值;正式 harness 另測 stale source 在 DDL 前拒絕、殘留阻止重試、跨家族拒絕與表內重複索引名稱。不是所有 patch/型別/schema 的證明。
- UI MySQL 8.x 明列僅 8.0/8.4,預覽完整實際版本;MariaDB 10.11/11.4 分別選取。API 另核對 VERSION 與 version_comment,拒絕未知 fork,不只相信 protocol handshake 的版本前綴。
- `Run-MySqlLogicalMigration.py` 的 versions/boundaries 模式連結正式 Core,保存映像 digest、來源 hash、版本與自有容器清理證據。boundaries 以真 Process.Kill 測 staging/未提交 batch/published,並驗證 8 MiB 多批、64 KiB 前置拒絕;不是 engine crash/power loss。Windows LocalDB 匯出 integration 本輪未在 Linux 執行,歷史 crash 記錄不當本輪重跑。完整方向/限制見 `docs/LOGICAL_MIGRATION_MATRIX.md`;release hold 不變。
- `Run-MySqlLogicalMigration.py` 的 versions/boundaries 模式連結正式 Core,保存映像 digest、來源 hash、版本與自有容器清理證據。boundaries 以真 Process.Kill 測 staging/未提交 batch/published,並驗證 8 MiB 多批、64 KiB 前置拒絕;不是 engine crash/power loss。Windows LocalDB 匯出 integration 本輪未在 Linux 執行,歷史 crash 記錄不當本輪重跑。完整方向/限制見 `docs/LOGICAL_MIGRATION_MATRIX.md`。

- **Windows 更新流程**
- 下載只接受 Windows x64 可攜包或安裝檔;SHA-256 可來自 GitHub asset digest 或舊版 manifest,缺少有效校驗碼就停止。檔案先下載到獨立暫存檔,驗證通過才取代既有下載;取消、網路錯誤與校驗失敗都會清理暫存檔。
Expand Down
2 changes: 1 addition & 1 deletion docs/LOGICAL_MIGRATION_MATRIX.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ SQLite/PostgreSQL 工具入口在 Avalonia 工作台「邏輯搬移」。來
| Oracle/Snowflake 與其他引擎 | NUMBER/時間、空字串 NULL、identifier/collation 與交易 DDL 不等價 | 專用 catalog/codec/交易恢復設計;本輪不開連線 |
| MongoDB、Redis/Garnet 與表格引擎 | document/key-value model、TTL/原子操作/巢狀內容沒有通用無損表格映射 | 明確專用模型轉換契約,不當成同義 restore |

SQLite/SQLServer 與 MySQL 配對、非關聯式等方向在開連線前拒絕;MySQL↔MariaDB、未知 fork/版本須讀實際 engine catalog 後拒絕,仍在任何目標 DDL 前停止。雙向跨版本/換引擎的整體需求仍未全部完成;目前已擴充 SQLite/PG、MySQL/MariaDB↔PG 與上述兩組同引擎版本的可驗證子集,不是全引擎完成或發版宣告。release 仍 hold。
SQLite/SQLServer 與 MySQL 配對、非關聯式等方向在開連線前拒絕;MySQL↔MariaDB、未知 fork/版本須讀實際 engine catalog 後拒絕,仍在任何目標 DDL 前停止。雙向跨版本/換引擎的整體需求仍未全部完成;目前已擴充 SQLite/PG、MySQL/MariaDB↔PG 與上述兩組同引擎版本的可驗證子集,不代表任意引擎/版本或所有 schema 都可忠實轉換。

有 FK、其他字串定序、時間、decimal、identity、procedure/trigger 的一般資料庫仍須使用引擎官方 schema/data migration 工具與人工轉換/驗證,不是宣稱 bacpac 可無限制降版。新版 SQL Server .bak 仍不能直接還原到舊引擎,compatibility level 不改備份格式;既有原生 restore 預檢繼續保留。

Expand Down