Test MySQL DB
Use this skill to query and validate test-environment MySQL data while keeping credentials and write operations controlled.
Safety Rules
- Treat all database credentials as secrets. Do not write hostnames, usernames, passwords, or DSNs into skill files, repo files, chat, logs, or generated artifacts unless the user explicitly asks for a redacted template.
- Prefer read-only operations. For
INSERT,UPDATE,DELETE, DDL, or stored procedure calls, get explicit user confirmation in the current conversation and state the target environment, database, table, predicate, expected row count, and rollback plan first. - Never run destructive broad statements such as unconstrained
DELETE, unconstrainedUPDATE,DROP,TRUNCATE, or schema changes unless the user explicitly asks and the target is confirmed as a disposable test database. - Use narrow predicates,
LIMIT, and transactions where possible. For write validation, capture before/after query results. - Redact passwords, tokens, personal data, payment data, and secrets in final responses.
Connection Discovery
Find connection details from the safest available source:
- Existing project configuration for the test/dev profile, such as Spring
application-dev.yml,application-test.yml, Nacos/Apollo/local config, Docker Compose,.env, CI variables, or documented runbooks. - Environment variables already present in the shell, preferably:
TEST_MYSQL_HOSTTEST_MYSQL_PORTTEST_MYSQL_USERTEST_MYSQL_PASSWORDTEST_MYSQL_DATABASE
- A user-provided one-time value in chat, redacted after use in summaries.
If multiple test databases are plausible, identify the service/module and ask only for the missing disambiguation.
Query Workflow
- Clarify the business key to query: order number, request id, trace id, user id, batch id, table name, or service/module.
- Inspect relevant code/config first when the table or database is unclear. Use
rgto find mapper XML, repository methods, entity classes, migration files, and datasource config. - Build the smallest SQL that answers the question. Prefer selecting explicit columns over
SELECT *when the table is wide or sensitive. - Run read-only SQL with
scripts/mysql_query.pywhen Python MySQL drivers are available, or use the localmysqlclient if the environment already provides it. - Summarize findings with redacted values and include the exact safe SQL shape when useful.
Write Or Validation Workflow
For new code that writes database data:
- Read the implementation path to determine affected database, table, and expected fields.
- Query the before state if possible.
- Trigger or wait for the relevant test action if the user asks for end-to-end validation.
- Query the after state with a narrow predicate.
- Compare actual rows with the expected code behavior, including default values, enum values, timestamps, and nullable fields.
For explicit test-data fixes:
- Draft the SQL and a rollback SQL first.
- Ask for explicit confirmation unless the user has already given a direct command for that exact SQL and target.
- Run inside a transaction when supported by the operation.
- Verify affected row count and final state.
Helper Script
Use scripts/mysql_query.py for repeatable CLI execution:
python scripts/mysql_query.py --sql "select 1"
python scripts/mysql_query.py --database order_deve --sql-file work/query.sql --format table
python scripts/mysql_query.py --allow-write --sql-file work/fix.sql
The script reads connection values from TEST_MYSQL_* environment variables by default. It rejects non-read SQL unless --allow-write is passed.
Output Style
- For troubleshooting, lead with the conclusion and the rows or fields that prove it.
- For validation, report expected vs actual database state.
- For failed connections, report which non-secret part is missing or failed, such as host, port, network reachability, driver availability, or database name.
评论
加载中…