Frun1na opened a new pull request, #4721:
URL: https://github.com/apache/rocketmq-dashboard/pull/4721

   ### Which Issue(s) This PR Fixes
   
   ### Brief Description
   
   `deploy/mysql/upgrade-nameserver-name-uk.sql` sorts the duplicate nameserver 
rows by
   `created_at`, a column `rmq_nameserver` does not have. #2317 standardised 
every table on a
   numeric `id` plus `gmt_create` / `gmt_modified`, and the schema comment it 
added spells it out:
   `禁止 created_at/updated_at,禁止 VARCHAR UUID 主键。` This script arrived eight 
days after that
   change (#2510, 2026-08-25), so it has been failing since the day it was 
added:
   
   ```
   $ docker exec -i rocketmq-studio-mysql mysql -uroot -pstudio123 mig_probe < 
upgrade-nameserver-name-uk.sql
   ERROR 1054 (42S22) at line 17: Unknown column 'k.created_at' in 'on clause'
   ```
   
   The script aborts before reaching `ALTER TABLE ... ADD UNIQUE KEY`, so the 
`uk_nameserver_name`
   it exists to create is never applied. The fix sorts on `gmt_create` — the 
creation timestamp the
   table actually defines.
   
   The other `deploy/mysql/upgrade-*.sql` scripts were also checked against the 
same schema change;
   they reference the pre-#2317 table and column names too, but each of them 
was added *before*
   #2317 (2026-08-06 … 2026-08-13), when those names were still correct, so 
they are left untouched.
   
   ### How Did You Test This Change?
   
   Against the project's MySQL 8 container (`deploy/docker-compose.yml`), on a 
scratch database
   holding only `rmq_nameserver` exactly as 
`server/src/main/resources/db/schema.sql` defines it.
   
   Before, running the script from the base branch:
   
   ```
   $ docker exec -i rocketmq-studio-mysql mysql -uroot -pstudio123 mig_probe < 
/tmp/orig.sql
   ERROR 1054 (42S22) at line 17: Unknown column 'k.created_at' in 'on clause'
   ```
   
   After, starting from four duplicate rows that differ only by timestamp and 
id:
   
   ```
   id  gmt_create           namesrv_addr      <- before
   1   2026-08-01 10:00:00  a:9876
   2   2026-08-02 10:00:00  b:9876
   3   2026-08-03 10:00:00  c:9876
   4   2026-08-01 10:00:00  d:9876
   
   $ docker exec -i rocketmq-studio-mysql mysql -uroot -pstudio123 mig_probe < 
deploy/mysql/upgrade-nameserver-name-uk.sql
   (no output, exit 0)
   
   id  gmt_create           namesrv_addr      <- after
   1   2026-08-01 10:00:00  a:9876
   ```
   
   The row with the earliest `gmt_create` survives; id 4 shares that timestamp 
and loses on the `id`
   tie-break, which is what the header comment promises.
   
   Idempotency still holds — a second run reports the key already exists:
   
   ```
   $ docker exec -i rocketmq-studio-mysql mysql -uroot -pstudio123 mig_probe < 
deploy/mysql/upgrade-nameserver-name-uk.sql
   msg
   uk_nameserver_name already exists
   
   $ docker exec rocketmq-studio-mysql sh -c 'mysql -uroot -pstudio123 -N -e 
"SELECT index_name FROM information_schema.statistics WHERE 
table_schema=\"mig_probe\" AND table_name=\"rmq_nameserver\";"'
   PRIMARY
   uk_nameserver_name
   ```
   
   The scratch database was dropped afterwards. No server or web code changed, 
so the Maven and
   Vitest suites were not re-run.
   
   ### Checklist
   
   - [x] One coherent change; unrelated modifications are not bundled in
   - [x] Commit subject follows Conventional Commits (`fix:`)
   - [ ] Tests added or updated for non-trivial changes, test methods named 
`...Test`
   - [ ] New UI text has both Chinese and English entries under `web/src/i18n/`
   - [ ] Architecture constraints stay green (`mvn test` runs the ArchUnit 
checks)
   - [ ] New source files carry the ASF license header
   - [ ] Documentation touched where behaviour changed (README / `docs/` / 
in-app help)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to