Saltar al contenido principal

MySQL / MariaDB

Traducción Beta No Oficial

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

MySQL, MariaDB y Amazon Aurora MySQL son compatibles como controladores de TypeORM.

Instalación

npm install mysql2

Opciones de Data Source

Consulta Opciones del Origen de Datos para las opciones comunes. Puedes usar los tipos de origen de datos mysql, mariadb y aurora-mysql para conectarte a las respectivas bases de datos.

  • url - URL de conexión donde se realiza la conexión. Ten en cuenta que otras opciones del data source sobreescribirán parámetros establecidos en la URL.

  • host - Host de la base de datos.

  • port - Puerto del host de la base de datos. El puerto predeterminado de MySQL es 3306.

  • username - Nombre de usuario de la base de datos.

  • password - Contraseña de la base de datos.

  • database - Nombre de la base de datos.

  • socketPath - Ruta del socket de la base de datos.

  • poolSize - Número máximo de clientes que debe contener el pool para cada conexión.

  • charset y collation - El conjunto de caracteres/intercalación para la conexión. Si se especifica un conjunto de caracteres a nivel SQL (como utf8mb4), se usará la intercalación predeterminada para ese conjunto.

  • timezone - Zona horaria configurada en el servidor MySQL. Se utiliza para convertir valores de fecha/hora del servidor a objetos JavaScript Date y viceversa. Puede ser local, Z, o un desplazamiento en formato +HH:MM o -HH:MM. (Predeterminado: local)

  • connectTimeout - Milisegundos antes de que ocurra un timeout durante la conexión inicial al servidor MySQL. (Predeterminado: 10000)

  • acquireTimeout - Milisegundos antes de que ocurra un timeout durante la conexión inicial al servidor MySQL. Se diferencia de connectTimeout porque gobierna el timeout de conexión TCP, mientras que connectTimeout no lo hace. (Predeterminado: 10000)

  • insecureAuth - Permite conectarse a instancias MySQL que solicitan el método antiguo (inseguro) de autenticación. (Predeterminado: false)

  • supportBigNumbers - Cuando se manejan números grandes (columnas BIGINT y DECIMAL) en la base de datos, deberías habilitar esta opción (Predeterminado: true)

  • bigNumberStrings - Habilitar tanto supportBigNumbers como bigNumberStrings fuerza a que los números grandes (columnas BIGINT y DECIMAL) siempre se devuelvan como objetos String de JavaScript (Predeterminado: true). Habilitar supportBigNumbers pero dejar bigNumberStrings desactivado devolverá números grandes como objetos String solo cuando no puedan representarse con precisión mediante objetos Number de JavaScript (lo que ocurre cuando exceden el rango [-2^53, +2^53]), de lo contrario se devolverán como objetos Number. Esta opción se ignora si supportBigNumbers está desactivado.

  • dateStrings - Fuerza que los tipos de fecha (TIMESTAMP, DATETIME, DATE) se devuelvan como cadenas en lugar de convertirse en objetos JavaScript Date. Puede ser true/false o un array de nombres de tipos para mantener como cadenas. (Predeterminado: false)

  • debug - Imprime detalles del protocolo en stdout. Puede ser true/false o un array de nombres de tipos de paquetes que deben imprimirse. (Predeterminado: false)

  • trace - Genera trazas de pila en errores para incluir el sitio de llamada de entrada a la biblioteca ("trazas de pila largas"). Penalización de rendimiento leve para la mayoría de llamadas. (Predeterminado: true)

  • multipleStatements - Permite múltiples sentencias MySQL por consulta. Ten cuidado con esto, podría aumentar el alcance de ataques de inyección SQL. (Predeterminado: false)

  • legacySpatialSupport - Usa funciones espaciales heredadas como GeomFromText y AsText, que han sido reemplazadas por las compatibles con estándares ST_GeomFromText o ST_AsText en MySQL 8.0. (Predeterminado actual: true)

  • flags - Lista de flags de conexión para usar además de los predeterminados. También es posible crear una lista negra de los predeterminados. Para más información, consulta Connection Flags.

  • ssl - objeto con parámetros SSL o una cadena que contiene el nombre del perfil SSL. Consulta SSL options.

  • enableQueryTimeout - Si se especifica un valor para maxQueryExecutionTime, además de generar un registro de advertencia cuando una consulta excede este límite de tiempo, el valor maxQueryExecutionTime también se usará como tiempo de espera para la consulta. Para más información, consulta mysql timeouts.

Opciones adicionales pueden agregarse al objeto extra y se pasarán directamente a la biblioteca cliente. Consulta más detalles en la documentación de mysql2.

Tipos de Columna

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

Nota: uuid, inet4 e inet6 solo están disponibles en MariaDB y en versiones específicas que los implementen.

Tipo de columna enum

Consulte tipo de columna enum.

Tipo de columna set

El tipo de columna set es compatible con mariadb y mysql. Existen varias definiciones posibles:

Usando enumeraciones de 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[]
}

Usando un array con valores 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[]
}

Tipos vectoriales

MySQL admite el tipo VECTOR desde la versión 9.0, mientras que en MariaDB, los vectores están disponibles desde la versión 11.7.