MySQL / MariaDB
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 es3306. -
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. -
charsetycollation- 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 serlocal,Z, o un desplazamiento en formato+HH:MMo-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 deconnectTimeoutporque 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 (columnasBIGINTyDECIMAL) en la base de datos, deberías habilitar esta opción (Predeterminado:true) -
bigNumberStrings- Habilitar tantosupportBigNumberscomobigNumberStringsfuerza a que los números grandes (columnasBIGINTyDECIMAL) siempre se devuelvan como objetos String de JavaScript (Predeterminado:true). HabilitarsupportBigNumberspero dejarbigNumberStringsdesactivado 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 sisupportBigNumbersestá 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 comoGeomFromTextyAsText, que han sido reemplazadas por las compatibles con estándaresST_GeomFromTextoST_AsTexten 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,inet4einet6solo 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.