Zum Hauptinhalt springen

MySQL / MariaDB

Inoffizielle Beta-Übersetzung

Diese Seite wurde von PageTurner AI übersetzt (Beta). Nicht offiziell vom Projekt unterstützt. Fehler gefunden? Problem melden →

MySQL, MariaDB und Amazon Aurora MySQL werden als TypeORM-Treiber unterstützt.

Installation

npm install mysql2

Datenquellen-Optionen

Allgemeine Datenquellen-Optionen finden Sie unter Datenquellen-Optionen. Für die Verbindung zu den jeweiligen Datenbanken können Sie die Datenquellentypen mysql, mariadb und aurora-mysql verwenden.

  • url - Verbindungs-URL, über die die Verbindung hergestellt wird. Beachten Sie, dass andere Datenquellen-Optionen Parameter aus der URL überschreiben.

  • host - Datenbank-Host.

  • port - Port des Datenbank-Hosts. Der Standardport für MySQL ist 3306.

  • username - Datenbank-Benutzername.

  • password - Datenbank-Passwort.

  • database - Datenbankname.

  • socketPath - Socket-Pfad der Datenbank.

  • poolSize - Maximale Anzahl von Clients, die der Pool pro Verbindung enthalten soll.

  • charset und collation - Zeichensatz/Kollation für die Verbindung. Wenn ein SQL-Level-Zeichensatz angegeben wird (z.B. utf8mb4), wird die Standardkollation für diesen Zeichensatz verwendet.

  • timezone - Die auf dem MySQL-Server konfigurierte Zeitzone. Wird verwendet, um Server-Datum/Uhrzeit-Werte in JavaScript-Date-Objekte umzuwandeln und umgekehrt. Kann local, Z oder ein Offset im Format +HH:MM oder -HH:MM sein. (Standard: local)

  • connectTimeout - Millisekunden bis zum Timeout während des initialen Verbindungsaufbaus zum MySQL-Server. (Standard: 10000)

  • acquireTimeout - Millisekunden bis zum Timeout beim Aufbau der TCP-Verbindung zum MySQL-Server. Unterscheidet sich von connectTimeout, da es den TCP-Verbindungs-Timeout regelt, während connectTimeout dies nicht tut. (Standard: 10000)

  • insecureAuth - Ermöglicht die Verbindung zu MySQL-Instanzen, die die alte (unsichere) Authentifizierungsmethode verwenden. (Standard: false)

  • supportBigNumbers - Sollte aktiviert werden, wenn mit großen Zahlen (BIGINT- und DECIMAL-Spalten) in der Datenbank gearbeitet wird. (Standard: true)

  • bigNumberStrings - Wenn sowohl supportBigNumbers als auch bigNumberStrings aktiviert sind, werden große Zahlen (BIGINT und DECIMAL Spalten) immer als JavaScript-String-Objekte zurückgegeben (Standard: true). Ist supportBigNumbers aktiviert und bigNumberStrings deaktiviert, werden große Zahlen nur dann als String-Objekte zurückgegeben, wenn sie nicht exakt als JavaScript Number-Objekte dargestellt werden können (d.h. wenn sie den Bereich [-2^53, +2^53] überschreiten), andernfalls als Number-Objekte. Diese Option wird ignoriert, wenn supportBigNumbers deaktiviert ist.

  • dateStrings - Erzwingt, dass Datumstypen (TIMESTAMP, DATETIME, DATE) als Strings statt als JavaScript-Date-Objekte zurückgegeben werden. Kann true/false sein oder ein Array von Typnamen, die als Strings beibehalten werden sollen. (Standard: false)

  • debug - Gibt Protokolldetails auf stdout aus. Kann true/false sein oder ein Array von Pakettypen, die ausgegeben werden sollen. (Standard: false)

  • trace - Erzeugt Stack Traces bei Fehlern, die den Aufrufort des Bibliothekseinstiegspunkts einschließen ("long stack traces"). Leichter Leistungsverlust für die meisten Aufrufe. (Standard: true)

  • multipleStatements - Ermöglicht mehrere MySQL-Statements pro Abfrage. Vorsicht: Dies kann den Umfang von SQL-Injection-Angriffen vergrößern. (Standard: false)

  • legacySpatialSupport - Verwendet veraltete räumliche Funktionen wie GeomFromText und AsText, die in MySQL 8.0 durch standardkonforme ST_GeomFromText bzw. ST_AsText ersetzt wurden. (Aktueller Standard: true)

  • flags - Liste von Verbindungs-Flags, die zusätzlich zu den Standard-Flags verwendet werden sollen. Es ist auch möglich, Standard-Flags auszuschließen. Weitere Informationen unter Connection Flags.

  • ssl - Ein Objekt mit SSL-Parametern oder eine Zeichenkette, die den Namen des SSL-Profils enthält. Weitere Informationen: SSL-Optionen.

  • enableQueryTimeout - Wenn ein Wert für maxQueryExecutionTime festgelegt ist, wird neben einer Warnung im Log bei Überschreitung dieser Zeitgrenze der angegebene maxQueryExecutionTime-Wert auch als Timeout für die Query verwendet. Weitere Details: mysql timeouts.

Zusätzliche Optionen können im extra-Objekt hinzugefügt werden und werden direkt an die Client-Bibliothek übergeben. Weitere Details finden Sie in der mysql2-Dokumentation.

Spaltentypen

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

Hinweis: uuid, inet4 und inet6 sind nur für MariaDB und in den jeweiligen Versionen verfügbar, die sie eingeführt haben.

enum-Spaltentyp

Siehe enum-Spaltentyp.

set-Spaltentyp

Der set-Spaltentyp wird von mariadb und mysql unterstützt. Es gibt verschiedene mögliche Spaltendefinitionen:

Verwendung von TypeScript-Enums:

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

Verwendung eines Arrays mit set-Werten:

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

Vektortypen

MySQL unterstützt den VECTOR-Typ seit Version 9.0, während in MariaDB Vektoren seit Version 11.7 verfügbar sind.