# 使用限制

MatrixOne 兼容 MySQL 的**常用子集**，并不是全量 MySQL 8.0。下列为产品文档中需要先知道的边界，避免把「源站 MySQL 手册能写的语法」直接搬到生产。

限制会随版本放宽；以当前实例报错信息与发布说明为准。

## LOAD DATA

MySQL 完整 `LOAD DATA` 语法中，MatrixOne 常见**不支持或仅部分支持**的点：

| 项 | 说明 |
| --- | --- |
| `LOCAL` | 不支持从客户端本地传文件到服务端的 `LOCAL` 路径 |
| `REPLACE` | 装载时的 `REPLACE` 语义通常不可用 |
| `PARTITION` | 指定分区装载一般不支持 |
| `CHARACTER SET` | 实质上按 UTF-8 处理 |
| 字段/行分隔的任意定制 | 分隔符可用，但部分转义、`ENCLOSED BY` 可变、`LINES STARTING BY` 等受 CSV 实现约束 |
| `SET col = expr` | 装载时列表达式变换通常不支持 |
| 用户变量列 | `@user_var` 占位过滤等行为有限 |

**较稳妥的用法模式**：

```text
LOAD DATA INFILE 'path/to/file'
[IGNORE]
INTO TABLE tbl
FIELDS TERMINATED BY ','
[IGNORE n LINES]
[(col_list)];
```

CSV 习惯约定（摘要）：

- 字段分隔：常用 `,`，也可用其它非特殊分隔符（如 `|`）。  
- 字段引用：`"`。  
- 行结束：`\n` 或 `\r\n`。  
- `\N` 表示 NULL。  
- 以 `#` 开头的行常被当作注释跳过。  
- `IGNORE`：转换失败时尽量继续并累计 warning，而不是整批失败（行为以引擎为准）。

大文件更推荐 Stage + 服务端路径装载，而不是依赖客户端 `LOCAL`。

## 分区（Partition）

- 文档与元数据中可能出现 `KEY` / `HASH` 等分区类型枚举。  
- **`RANGE` / `LIST` 等类型通常仍不可用**；`mo_table_partitions` 中相关描述列可能为空。  
- 不要按 MySQL 全部分区策略做容量规划，先在目标实例上验证 `CREATE TABLE ... PARTITION BY`。

## JDBC / 驱动能力

官方 JDBC 等驱动对 MatrixOne 是**功能支持列表**模型：常用 CRUD、预处理、批量在支持范围内；部分 MySQL Connector 专有或冷门 API 可能未实现。接入时以[开发](../../developer/index.md)与驱动发行说明为准，不要假设与 MySQL Connector/J 行为 100% 相同。

## 其它常见差异（摘要）

| 领域 | 说明 |
| --- | --- |
| 保留关键字 | 与 MySQL 略有出入；限定名下保留字仍建议反引号，见[结构与语法](language-structure.md) |
| 系统表 | `information_schema` / `mysql` 为子集 |
| 向量列 | 不可作主键/唯一键；维度与元素类型有约束，见[数据类型](data-types.md) |
| 存储过程 / 触发器 / 事件调度 | 不要默认可用；以实例实际语法支持为准 |
| 字符集 | 产品路径上以 `utf8mb4` 为主 |

## 相关页面

- [SQL 语句](statements.md)
- [数据类型](data-types.md)
- [系统表](system-tables.md)
- [指南 · MatrixOne](../../guides/matrixone/index.md)
