# Send MySQL to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "mysql",
    "name": "MySQL",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/ivangdavila/mysql",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/mysql",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/mysql",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mysql",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "indexes.md",
      "production.md",
      "queries.md",
      "transactions.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "mysql",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-29T20:01:28.879Z",
      "expiresAt": "2026-05-06T20:01:28.879Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mysql",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mysql",
        "contentDisposition": "attachment; filename=\"mysql-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "mysql"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/mysql"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/mysql",
    "downloadUrl": "https://openagent3.xyz/downloads/mysql",
    "agentUrl": "https://openagent3.xyz/skills/mysql/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mysql/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mysql/agent.md"
  }
}
```
## Documentation

### Quick Reference

TopicFileIndex design deep diveindexes.mdTransactions and lockingtransactions.mdQuery optimizationqueries.mdProduction configproduction.md

### Character Set Traps

utf8 is broken—only 3 bytes, can't store emoji; always use utf8mb4
utf8mb4_unicode_ci for case-insensitive sorting; utf8mb4_bin for exact byte comparison
Collation mismatch in JOINs kills performance—ensure consistent collation across tables
Connection charset must match: SET NAMES utf8mb4 or connection string parameter
Index on utf8mb4 column larger—may hit index size limits; consider prefix index

### Index Differences from PostgreSQL

No partial indexes—can't WHERE active = true in index definition
No expression indexes until MySQL 8.0.13—must use generated columns before that
TEXT/BLOB needs prefix length: INDEX (description(100))—without length, error
No INCLUDE for covering—add columns to index itself: INDEX (a, b, c) to cover c
Foreign keys auto-indexed only in InnoDB—verify engine before assuming

### UPSERT Patterns

INSERT ... ON DUPLICATE KEY UPDATE—not standard SQL; needs unique key conflict
LAST_INSERT_ID() for auto-increment—no RETURNING clause like PostgreSQL
REPLACE INTO deletes then inserts—changes auto-increment ID, triggers DELETE cascade
Check affected rows: 1 = inserted, 2 = updated (counter-intuitive)

### Locking Traps

SELECT ... FOR UPDATE locks rows—but gap locks may lock more than expected
InnoDB uses next-key locking—prevents phantom reads but can cause deadlocks
Lock wait timeout default 50s—innodb_lock_wait_timeout for adjustment
FOR UPDATE SKIP LOCKED exists in MySQL 8+—queue pattern
InnoDB default isolation is REPEATABLE READ, not READ COMMITTED like PostgreSQL
Deadlocks are expected—code must catch and retry, not just fail

### GROUP BY Strictness

sql_mode includes ONLY_FULL_GROUP_BY by default in MySQL 5.7+
Non-aggregated columns must be in GROUP BY—unlike old MySQL permissive mode
ANY_VALUE(column) to silence error when you know values are same
Check sql_mode on legacy databases—may behave differently

### InnoDB vs MyISAM

Always use InnoDB—transactions, row locking, foreign keys, crash recovery
MyISAM still default for some system tables—don't use for application data
Check engine: SHOW TABLE STATUS—convert with ALTER TABLE ... ENGINE=InnoDB
Mixed engines in JOINs work but lose transaction guarantees

### Query Quirks

LIMIT offset, count different order than PostgreSQL's LIMIT count OFFSET offset
!= and <> both work; prefer <> for SQL standard
No transactional DDL—ALTER TABLE commits immediately, can't rollback
Boolean is TINYINT(1)—TRUE/FALSE are just 1/0
IFNULL(a, b) instead of COALESCE for two args—though COALESCE works

### Connection Management

wait_timeout kills idle connections—default 8 hours; pooler may not notice
max_connections default 151—often too low; each uses memory
Connection pools: don't exceed max_connections across all app instances
SHOW PROCESSLIST to see active connections—kill long-running with KILL <id>

### Replication Awareness

Statement-based replication can break with non-deterministic functions—UUID(), NOW()
Row-based replication safer but more bandwidth—default in MySQL 8
Read replicas have lag—check Seconds_Behind_Master before relying on replica reads
Don't write to replica—usually read-only but verify

### Performance

EXPLAIN ANALYZE only in MySQL 8.0.18+—older versions just EXPLAIN without actual times
Query cache removed in MySQL 8—don't rely on it; cache at application level
OPTIMIZE TABLE for fragmented tables—locks table; use pt-online-schema-change for big tables
innodb_buffer_pool_size—set to 70-80% of RAM for dedicated DB server
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: ivangdavila
- Version: 1.0.1
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-04-29T20:01:28.879Z
- Expires at: 2026-05-06T20:01:28.879Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/mysql)
- [Send to Agent page](https://openagent3.xyz/skills/mysql/agent)
- [JSON manifest](https://openagent3.xyz/skills/mysql/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/mysql/agent.md)
- [Download page](https://openagent3.xyz/downloads/mysql)