MySQL / MariaDB
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
TypeORM 驱动程序支持 MySQL、MariaDB 及 Amazon Aurora MySQL。
安装
npm install mysql2
数据源选项
通用选项请参阅数据源选项。可通过指定数据源类型 mysql、mariadb 或 aurora-mysql 连接对应数据库。
-
url- 执行连接操作的 URL。请注意,其他数据源选项会覆盖 URL 中设置的参数。 -
host- 数据库主机地址。 -
port- 数据库主机端口。MySQL 默认端口为3306。 -
username- 数据库用户名。 -
password- 数据库密码。 -
database- 数据库名称。 -
socketPath- 数据库 socket 路径。 -
poolSize- 连接池为每个连接最多可容纳的客户端数量。 -
charset和collation- 连接的字符集/排序规则。如果指定了 SQL 层级的字符集(如 utf8mb4),则使用该字符集的默认排序规则。 -
timezone- MySQL 服务器配置的时区。用于将服务器日期/时间值转换为 JavaScript Date 对象,反之亦然。可设为local、Z或+HH:MM/-HH:MM格式的时区偏移量(默认:local)。 -
connectTimeout- 初始连接 MySQL 服务器时的超时毫秒数(默认:10000)。 -
acquireTimeout- 初始连接 MySQL 服务器时的超时毫秒数。与connectTimeout不同,此参数控制 TCP 连接超时(默认:10000)。 -
insecureAuth- 允许连接要求使用旧式(不安全)认证方法的 MySQL 实例(默认:false)。 -
supportBigNumbers- 处理数据库中的大数字(BIGINT和DECIMAL列)时应启用此选项(默认:true)。 -
bigNumberStrings- 同时启用supportBigNumbers和bigNumberStrings会强制将大数字(BIGINT和DECIMAL列)始终作为 JavaScript String 对象返回(默认:true)。启用supportBigNumbers但禁用bigNumberStrings时,仅当大数字超出 JavaScript Number 对象的精确表示范围(即超过[-2^53, +2^53])时才返回 String 对象,否则返回 Number 对象。若禁用supportBigNumbers则忽略此选项。 -
dateStrings- 强制将日期类型(TIMESTAMP,DATETIME,DATE)作为字符串返回而非转换为 JavaScript Date 对象。可设为 true/false 或需保留为字符串的类型名数组(默认:false)。 -
debug- 将协议细节打印到标准输出。可设为 true/false 或需打印的数据包类型名数组(默认:false)。 -
trace- 在 Error 上生成堆栈跟踪以包含库入口的调用点("长 堆栈跟踪"),多数调用会有轻微性能损耗(默认:true)。 -
multipleStatements- 允许每条查询包含多个 MySQL 语句。需谨慎使用,可能扩大 SQL 注入攻击范围(默认:false)。 -
legacySpatialSupport- 使用旧版空间函数(如GeomFromText,AsText),这些函数在 MySQL 8.0 中已被标准兼容的ST_GeomFromText或ST_AsText取代(当前默认:true)。 -
flags- 要使用的非默认连接标志列表,也可用于禁用默认标志。详细信息请参阅连接标志。 -
ssl- 包含 SSL 参数的对象,或指定 SSL 配置名称的字符串。详情请参阅 SSL 选项。 -
enableQueryTimeout- 若为 maxQueryExecutionTime 指定了值,则当查询超时后,除生成警告日志外,该 maxQueryExecutionTime 值还将被用作查询的超时时间。更多信息请查阅 mysql 超时设置。
可通过 extra 对象添加额外选项,这些配置将直接传递给客户端库。更多信息请参阅 mysql2 文档。
列类型
bit, int, integer, tinyint, smallint, mediumint, bigint, float, double, double precision, dec, decimal, numeric, fixed, bool, boolean, date, datetime, timestamp, time, year, char, nchar, national char, varchar, nvarchar, national varchar, text, tinytext, mediumtext, blob, longtext, tinyblob, mediumblob, longblob, enum, set, json, binary, varbinary, geometry, point, linestring, polygon, multipoint, multilinestring, multipolygon, geometrycollection, uuid, inet4, inet6
注意:
uuid、inet4和inet6仅适用于 MariaDB 及支持这些类型的对应版本
enum 列类型
详见 枚举列类型
set 列类型
set 列类型受 mariadb 和 mysql 支持。可通过多种方式定义列:
使用 TypeScript 枚举:
export enum UserRole {
ADMIN = "admin",
EDITOR = "editor",
GHOST = "ghost",
}
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Column({
type: "set",
enum: UserRole,
default: [UserRole.GHOST, UserRole.EDITOR],
})
roles: UserRole[]
}
使用包含 set 值的数组:
export type UserRoleType = "admin" | "editor" | "ghost"
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number
@Column({
type: "set",
enum: ["admin", "editor", "ghost"],
default: ["ghost", "editor"],
})
roles: UserRoleType[]
}