Перейти к основному содержанию

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 - Путь к сокету базы данных.

  • poolSize - Максимальное количество клиентов в пуле для каждого соединения.

  • charset и collation - Кодировка и сравнение для соединения. Если задана кодировка уровня SQL (например utf8mb4), используется collation по умолчанию для этой кодировки.

  • timezone - Часовой пояс, настроенный на сервере MySQL. Используется для преобразования значений даты/времени сервера в объект JavaScript Date и обратно. Допустимые значения: local, Z или смещение в формате +HH:MM/-HH:MM (по умолчанию: local).

  • connectTimeout - Время в миллисекундах до таймаута при установке соединения с сервером MySQL (по умолчанию: 10000).

  • acquireTimeout - Время в миллисекундах до таймаута при установке TCP-соединения с сервером MySQL. Отличается от connectTimeout, который не контролирует TCP-таймаут (по умолчанию: 10000).

  • insecureAuth - Разрешает подключение к экземплярам MySQL, использующим устаревший (небезопасный) метод аутентификации (по умолчанию: false).

  • supportBigNumbers - Рекомендуется включать при работе с большими числами (BIGINT и DECIMAL) (по умолчанию: true).

  • bigNumberStrings - При одновременном включении supportBigNumbers и bigNumberStrings большие числа (столбцы BIGINT и DECIMAL) всегда возвращаются как строки JavaScript (по умолчанию: true). Если supportBigNumbers включен, а bigNumberStrings выключен, большие числа возвращаются как строки только при выходе за диапазон [-2^53, +2^53] (когда их нельзя точно представить с помощью чисел JavaScript), иначе — как числа. Игнорируется при отключённом supportBigNumbers.

  • dateStrings - Возвращает типы даты (TIMESTAMP, DATETIME, DATE) как строки вместо объектов JavaScript Date. Может быть true/false или массивом типов (по умолчанию: false).

  • debug - Выводит детали протокола в stdout. Может быть true/false или массивом имён типов пакетов (по умолчанию: false).

  • trace - Генерирует расширенные стек-трейсы ошибок ("long stack traces") с точкой входа библиотеки. Незначительно снижает производительность (по умолчанию: true).

  • multipleStatements - Разрешает несколько SQL-инструкций в одном запросе. Повышает риск SQL-инъекций (по умолчанию: false).

  • legacySpatialSupport - Использует устаревшие пространственные функции (GeomFromText, AsText) вместо стандартных ST_GeomFromText/ST_AsText из MySQL 8.0 (текущее значение по умолчанию: true).

  • flags - Список флагов соединения вместо стандартных. Также позволяет блокировать флаги по умолчанию. Подробнее: Connection Flags.

  • ssl - объект с параметрами SSL или строка, содержащая название SSL-профиля. Дополнительные сведения см. в разделе SSL options.

  • enableQueryTimeout - Если указано значение для maxQueryExecutionTime, то помимо генерации предупреждения в журнале при превышении лимита времени выполнения запроса, это значение также используется как таймаут для запроса. Подробнее см. mysql timeouts.

Дополнительные параметры можно добавить в объект 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

См. тип столбца 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[]
}

Векторные типы

MySQL поддерживает тип VECTOR начиная с версии 9.0, тогда как в MariaDB поддержка векторов появилась в версии 11.7.