跳至主内容区

MySQL / MariaDB

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

TypeORM 驱动程序支持 MySQL、MariaDB 及 Amazon Aurora MySQL。

安装

npm install mysql2

数据源选项

通用选项请参阅数据源选项。可通过指定数据源类型 mysqlmariadbaurora-mysql 连接对应数据库。

  • url - 执行连接操作的 URL。请注意,其他数据源选项会覆盖 URL 中设置的参数。

  • host - 数据库主机地址。

  • port - 数据库主机端口。MySQL 默认端口为 3306

  • username - 数据库用户名。

  • password - 数据库密码。

  • database - 数据库名称。

  • socketPath - 数据库 socket 路径。

  • poolSize - 连接池为每个连接最多可容纳的客户端数量。

  • charsetcollation - 连接的字符集/排序规则。如果指定了 SQL 层级的字符集(如 utf8mb4),则使用该字符集的默认排序规则。

  • timezone - MySQL 服务器配置的时区。用于将服务器日期/时间值转换为 JavaScript Date 对象,反之亦然。可设为 localZ+HH:MM/-HH:MM 格式的时区偏移量(默认:local)。

  • connectTimeout - 初始连接 MySQL 服务器时的超时毫秒数(默认:10000)。

  • acquireTimeout - 初始连接 MySQL 服务器时的超时毫秒数。与 connectTimeout 不同,此参数控制 TCP 连接超时(默认:10000)。

  • insecureAuth - 允许连接要求使用旧式(不安全)认证方法的 MySQL 实例(默认:false)。

  • supportBigNumbers - 处理数据库中的大数字(BIGINTDECIMAL 列)时应启用此选项(默认:true)。

  • bigNumberStrings - 同时启用 supportBigNumbersbigNumberStrings 会强制将大数字(BIGINTDECIMAL 列)始终作为 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_GeomFromTextST_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

注意:uuidinet4inet6 仅适用于 MariaDB 及支持这些类型的对应版本

enum 列类型

详见 枚举列类型

set 列类型

set 列类型受 mariadbmysql 支持。可通过多种方式定义列:

使用 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[]
}

向量类型

MySQL 从 9.0 版本开始支持 VECTOR 类型,而 MariaDB 则从 11.7 版本起支持向量功能。