# 数据库操作规则 ## 数据库版本 - **MySQL 版本**: 8.4.8 - 注意 MySQL 8.4 的语法差异(如 `GROUP BY` 更严格、部分废弃函数等) ## Docker 部署配置 ```bash --sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" \ --innodb_strict_mode=OFF \ --innodb_page_size=32k \ --max_connections=1020 \ --lower_case_table_names=1 \ --innodb_buffer_pool_size=70G \ --innodb_flush_log_at_trx_commit=2 \ --innodb_log_file_size=2G \ --innodb_log_buffer_size=64M ``` **配置说明:** - `lower_case_table_names=1`: 表名不区分大小写 - `innodb_page_size=32k`: 较大的页大小适合大数据量场景 - `innodb_buffer_pool_size=70G`: 缓冲池大小,建议为物理内存的 60-80% - `innodb_flush_log_at_trx_commit=2`: 每秒刷写日志,性能优先(非金融场景) ## 规则 - 优先使用 MySQL MCP 工具(`mcp__designcomputer-mysql_mcp_server__execute_sql`、`mcp__designcomputer-mysql_mcp_server__get_schema_info`、`mcp__designcomputer-mysql_mcp_server__get_table_sample`)直接操作数据库,而非通过 Bash 执行 mysql 命令。 - 查询、验证、调试数据库时,直接调用 MCP 工具执行 SQL,无需向用户输出 SQL 语句或询问是否执行。 - 仅在以下场景输出 SQL:用户明确要求查看 SQL、需要生成 SQL 脚本文件(如迁移脚本)、MCP 工具不可用时回退到 Bash。 ## MCP 工具说明 | 工具 | 用途 | |------|------| | `execute_sql` | 执行 SQL 语句(SELECT/INSERT/UPDATE/DELETE/DDL) | | `get_schema_info` | 获取表结构信息(列名、类型、注释等) | | `get_table_sample` | 获取表数据样本(用于了解数据格式) | ## 执行 SQL 脚本 当用户要求执行 SQL 文件时: 1. 先读取文件内容 2. 逐条执行 SQL 语句 3. 遇到错误时检查表结构,调整语句后重试 4. 汇总执行结果