diff --git a/CHANGELOG.md b/CHANGELOG.md index 58b0f90..da27656 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 轉換與阻擋原因,確認後才寫入另建空目標。單一交易、分批、內容校驗與不確定狀態禁止重試,不將一般資料傳輸或原生備份宣稱為無限制跨版本/跨引擎還原。 diff --git a/README.md b/README.md index baec965..44583dc 100644 --- a/README.md +++ b/README.md @@ -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`。 diff --git a/docs/FEATURE_NOTES.md b/docs/FEATURE_NOTES.md index 15c0cab..6fbdaf0 100644 --- a/docs/FEATURE_NOTES.md +++ b/docs/FEATURE_NOTES.md @@ -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,缺少有效校驗碼就停止。檔案先下載到獨立暫存檔,驗證通過才取代既有下載;取消、網路錯誤與校驗失敗都會清理暫存檔。 diff --git a/docs/LOGICAL_MIGRATION_MATRIX.md b/docs/LOGICAL_MIGRATION_MATRIX.md index a632be3..758785b 100644 --- a/docs/LOGICAL_MIGRATION_MATRIX.md +++ b/docs/LOGICAL_MIGRATION_MATRIX.md @@ -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 預檢繼續保留。