docs: document isolated MySQL 8 workflow (#5)
This commit is contained in:
@@ -2,8 +2,8 @@
|
||||
generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件)
|
||||
wiki_page: Local-Development-and-Verification
|
||||
wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Local-Development-and-Verification.-
|
||||
wiki_revision: 4cb7c477267bfc28c8582e275e02e20acfc2c83e
|
||||
synchronized_at: 2026-08-20T07:01:16Z
|
||||
wiki_revision: c5dd8e3415c206839b1252ae32c61f48bdb21198
|
||||
synchronized_at: 2026-08-20T14:51:55Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 本地开发与验证
|
||||
@@ -23,7 +23,7 @@ synchronized_at: 2026-08-20T07:01:16Z
|
||||
| pnpm | 9.15.1,由 packageManager/Corepack 固定 | `pnpm --version` |
|
||||
| Tailwind | standalone,仅 portal 样式 | `tailwindcss --help` |
|
||||
|
||||
2026-08-20 盘点:本机 Go 1.23.0、MySQL 5.7.38、未安装 migrate,不能用于产品构建或迁移验收;Node 22.22.1 可用,但当前全局 pnpm 11.21.0,应按 admin-ui 的 `packageManager` 使用 pnpm 9.15.1。升级环境必须单独完成,不伪造验证结果。
|
||||
2026-08-20 已完成 MVP-0 环境基线:便携 Go 1.26.5、golang-migrate v4.19.1 和隔离 MySQL 8.4.8 已验证。Chorus 专用实例监听 `127.0.0.1:3308`,使用独立数据目录和测试账号;既有 `3307` 实例与 MySQL 5.7 不受影响。Node 22.22.1 可用;admin-ui 后续仍必须按 `packageManager` 使用 pnpm 9.15.1,不能直接采用全局 pnpm 11。
|
||||
|
||||
固定来源:
|
||||
|
||||
@@ -56,21 +56,49 @@ $env:GITEA_URL = "https://git.ilapage.cn"
|
||||
python dev_scripts/harness.py sync --check
|
||||
```
|
||||
|
||||
### 2. 准备隔离数据库(产品代码落地后)
|
||||
### 2. 进入固定工具环境并连接隔离数据库
|
||||
|
||||
创建两个无生产数据的库:一个跑应用迁移测试,一个用于 go-admin 结构研究/代码生成。两者不得指向共享或生产实例。
|
||||
工具和凭据都位于仓库外。以下占位路径由维护者替换为自己的本机工具目录;环境文件不得提交,也不得把展开后的 DSN 输出到终端、日志、工单或 Wiki。
|
||||
|
||||
```powershell
|
||||
mysql -u root -p -e "CREATE DATABASE chorus_test DEFAULT CHARSET utf8mb4;"
|
||||
mysql -u root -p -e "CREATE DATABASE chorus_codegen DEFAULT CHARSET utf8mb4;"
|
||||
$env:CHORUS_DSN = "user:pass@tcp(127.0.0.1:3306)/chorus_test?parseTime=true&charset=utf8mb4"
|
||||
migrate -path migrations -database "<golang-migrate MySQL URL>" up
|
||||
migrate -path migrations -database "<golang-migrate MySQL URL>" down
|
||||
migrate -path migrations -database "<golang-migrate MySQL URL>" up
|
||||
$tools = "<本机工具目录>"
|
||||
$env:PATH = "$tools\go1.26.5\bin;$tools\migrate-v4.19.1;$env:PATH"
|
||||
. "$tools\chorus-test.env.ps1"
|
||||
|
||||
go version
|
||||
migrate -version
|
||||
mysql --version
|
||||
```
|
||||
|
||||
连接串格式必须按 golang-migrate 的 MySQL driver 验证,不把 GORM DSN 直接拼成未经验证的 URL。每个迁移先 up、down、再 up;从空库重放全部迁移才算通过。
|
||||
当前已验证变量包括 `CHORUS_MYSQL_HOST`、`CHORUS_MYSQL_PORT`、`CHORUS_MYSQL_DATABASE`、`CHORUS_MYSQL_USER`、`CHORUS_MYSQL_PASSWORD`、`CHORUS_DB_DSN` 和 `CHORUS_MIGRATE_URL`。应用使用 GORM DSN,迁移工具使用单独验证过的 MySQL URL,不在两种格式之间临时拼接。
|
||||
|
||||
专用实例的可复制启动和停止方式如下;`my.ini` 必须绑定 `127.0.0.1`,并指定独立端口、数据目录、日志和 PID 文件。
|
||||
|
||||
```powershell
|
||||
$mysqlHome = "<MySQL 8 安装目录>"
|
||||
$instance = "<Chorus MySQL 实例目录>"
|
||||
Start-Process -FilePath "$mysqlHome\bin\mysqld.exe" `
|
||||
-ArgumentList "--defaults-file=$instance\my.ini", "--console" `
|
||||
-WindowStyle Hidden
|
||||
|
||||
$env:MYSQL_PWD = $env:CHORUS_MYSQL_ROOT_PASSWORD
|
||||
& "$mysqlHome\bin\mysqladmin.exe" --protocol=tcp `
|
||||
--host=127.0.0.1 --port=3308 --user=root shutdown
|
||||
$env:MYSQL_PWD = $null
|
||||
```
|
||||
|
||||
能力探测使用构造查询,不创建业务表:
|
||||
|
||||
```powershell
|
||||
$env:MYSQL_PWD = $env:CHORUS_MYSQL_PASSWORD
|
||||
mysql --protocol=tcp --host=$env:CHORUS_MYSQL_HOST `
|
||||
--port=$env:CHORUS_MYSQL_PORT --user=$env:CHORUS_MYSQL_USER `
|
||||
--database=$env:CHORUS_MYSQL_DATABASE `
|
||||
--execute="START TRANSACTION; SELECT id FROM (SELECT 1 AS id) AS capability_probe FOR UPDATE SKIP LOCKED; ROLLBACK;"
|
||||
$env:MYSQL_PWD = $null
|
||||
```
|
||||
|
||||
业务迁移落地后,每个迁移必须在该隔离库执行 up、down、再 up,并从空库重放全部迁移。`chorus_codegen` 只在 MVP-1 的 go-admin 结构研究/代码生成工单中另行创建,不提前扩大当前账号权限。
|
||||
### 3. go-admin schema-first 生成(MVP-1)
|
||||
|
||||
1. 先在 `chorus_codegen` 执行同一套版本化 SQL。
|
||||
|
||||
Reference in New Issue
Block a user