or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

callbacks.mdclustering.mdconfiguration.mdconnections.mderrors.mdindex.mdpooling.mdqueries.mdtypes.md

index.mddocs/

0

# MariaDB Node.js Connector

1

2

MariaDB Node.js Connector is a high-performance MariaDB and MySQL connector for Node.js applications. It offers both Promise-based and callback-based APIs with TypeScript definitions, featuring advanced capabilities like insert streaming, pipelining, bulk inserts, and zero-configuration SSL.

3

4

## Package Information

5

6

- **Package Name**: mariadb

7

- **Package Type**: npm

8

- **Language**: JavaScript with TypeScript definitions

9

- **Installation**: `npm install mariadb`

10

11

## Core Imports

12

13

```javascript

14

// Promise-based API (main entry point)

15

const mariadb = require("mariadb");

16

const { createConnection, createPool, createPoolCluster, importFile, SqlError, version } = require("mariadb");

17

```

18

19

ES Modules:

20

21

```typescript

22

import * as mariadb from "mariadb";

23

import { createConnection, createPool, createPoolCluster, importFile, SqlError, version } from "mariadb";

24

```

25

26

Callback-based API:

27

28

```javascript

29

const mariadb = require("mariadb/callback");

30

const { createConnection, createPool, createPoolCluster, importFile, SqlError, version } = require("mariadb/callback");

31

```

32

33

## Basic Usage

34

35

```javascript

36

const mariadb = require("mariadb");

37

38

// Create connection

39

const connection = await mariadb.createConnection({

40

host: "localhost",

41

user: "root",

42

password: "password",

43

database: "test"

44

});

45

46

// Execute query

47

const rows = await connection.query("SELECT * FROM users WHERE age > ?", [18]);

48

console.log(rows);

49

50

// Close connection

51

await connection.end();

52

```

53

54

## Architecture

55

56

The MariaDB connector is built around several key components:

57

58

- **Connection API**: Individual database connections with Promise or callback interfaces

59

- **Pool API**: Connection pooling for efficient resource management and scalability

60

- **Cluster API**: Pool clustering for load balancing and high availability

61

- **Configuration System**: Comprehensive options for connection behavior, timeouts, and data formatting

62

- **Type System**: Full TypeScript support with detailed type definitions for all APIs

63

- **Error Handling**: Structured error objects with SQL state codes and detailed error information

64

65

## Capabilities

66

67

### Connection Management

68

69

Core database connection functionality for establishing, managing, and executing queries on individual database connections. Supports both Promise-based and callback-based APIs.

70

71

```typescript { .api }

72

function createConnection(config: string | ConnectionConfig): Promise<Connection>;

73

74

interface Connection {

75

query<T>(sql: string | QueryOptions, values?: any): Promise<T>;

76

execute<T>(sql: string | QueryOptions, values?: any): Promise<T>;

77

beginTransaction(): Promise<void>;

78

commit(): Promise<void>;

79

rollback(): Promise<void>;

80

end(): Promise<void>;

81

}

82

```

83

84

[Connection Management](./connections.md)

85

86

### Connection Pooling

87

88

Connection pooling system for managing multiple database connections efficiently. Provides automatic connection lifecycle management, configurable pool sizing, and resource optimization.

89

90

```typescript { .api }

91

function createPool(config: string | PoolConfig): Pool;

92

93

interface Pool {

94

getConnection(): Promise<PoolConnection>;

95

query<T>(sql: string | QueryOptions, values?: any): Promise<T>;

96

execute<T>(sql: string | QueryOptions, values?: any): Promise<T>;

97

end(): Promise<void>;

98

totalConnections(): number;

99

activeConnections(): number;

100

idleConnections(): number;

101

}

102

```

103

104

[Connection Pooling](./pooling.md)

105

106

### Pool Clustering

107

108

Pool clustering functionality for load balancing across multiple database pools and high availability scenarios. Supports node management, failover, and flexible connection routing.

109

110

```typescript { .api }

111

function createPoolCluster(config?: PoolClusterConfig): PoolCluster;

112

113

interface PoolCluster {

114

add(id: string, config: PoolConfig): void;

115

remove(pattern: string): void;

116

getConnection(pattern?: string, selector?: string): Promise<PoolConnection>;

117

of(pattern?: string, selector?: string): FilteredPoolCluster;

118

end(): Promise<void>;

119

}

120

```

121

122

[Pool Clustering](./clustering.md)

123

124

### Configuration Options

125

126

Comprehensive configuration system covering connection parameters, timeouts, data formatting, SSL settings, and performance tuning options.

127

128

```typescript { .api }

129

interface ConnectionConfig {

130

host?: string;

131

port?: number;

132

user?: string;

133

password?: string;

134

database?: string;

135

ssl?: boolean | SSLConfig;

136

connectTimeout?: number;

137

queryTimeout?: number;

138

// ... extensive configuration options

139

}

140

141

function defaultOptions(config?: ConnectionConfig): any;

142

```

143

144

[Configuration](./configuration.md)

145

146

### Query Operations

147

148

Advanced querying capabilities including prepared statements, batch operations, streaming queries, and transaction management with comprehensive type safety.

149

150

```typescript { .api }

151

interface QueryOptions {

152

sql: string;

153

nestTables?: boolean;

154

typeCast?: TypeCastFunction;

155

rowsAsArray?: boolean;

156

timeout?: number;

157

}

158

159

interface Prepare {

160

execute<T>(values?: any): Promise<T>;

161

executeStream(values?: any): Readable;

162

close(): void;

163

}

164

```

165

166

[Query Operations](./queries.md)

167

168

### Error Handling

169

170

Structured error handling with detailed SQL error information, error codes, and connection state management for robust application development.

171

172

```typescript { .api }

173

interface SqlError extends Error {

174

code: string | null;

175

errno: number;

176

sqlState?: string | null;

177

sqlMessage: string | null;

178

sql: string | null;

179

fatal: boolean;

180

}

181

182

const SqlError: SqlErrorConstructor;

183

```

184

185

[Error Handling](./errors.md)

186

187

### SQL File Import

188

189

Import and execute SQL files directly into the database. Supports both Promise-based and callback-based APIs for database initialization and migration tasks.

190

191

```typescript { .api }

192

/** Import SQL file (Promise-based) */

193

function importFile(config: ImportFileConfig): Promise<void>;

194

195

interface ImportFileConfig extends ConnectionConfig {

196

/** SQL file path to import */

197

file: string;

198

}

199

```

200

201

[SQL File Import](./connections.md#sql-file-import)

202

203

### Callback API

204

205

Complete callback-based API matching the Promise API but using Node.js-style callbacks. All async methods use `(err, result, meta?) => void` callback signature.

206

207

```typescript { .api }

208

// Callback-based entry points

209

function createConnection(config: string | ConnectionConfig): Connection; // Returns callback-based Connection

210

function createPool(config: string | PoolConfig): Pool; // Returns callback-based Pool

211

function createPoolCluster(config?: PoolClusterConfig): PoolCluster; // Returns callback-based PoolCluster

212

function importFile(config: ImportFileConfig, callback: (err: SqlError | null) => void): void;

213

```

214

215

[Callback API](./callbacks.md)

216

217

### Package Constants

218

219

Core package constants and utilities exported by the mariadb module.

220

221

```typescript { .api }

222

/** Package version string */

223

const version: string;

224

225

/** SQL Error constructor class */

226

const SqlError: SqlErrorConstructor;

227

228

/** Get default connection options */

229

function defaultOptions(config?: ConnectionConfig): any;

230

```

231

232

[Type Definitions](./types.md)

233

234

## Type Definitions

235

236

```typescript { .api }

237

interface UpsertResult {

238

affectedRows: number;

239

insertId: number | bigint;

240

warningStatus: number;

241

}

242

243

interface ConnectionInfo {

244

threadId: number | null;

245

status: number;

246

serverVersion: ServerVersion;

247

serverCapabilities: number;

248

isMariaDB(): boolean;

249

hasMinVersion(major: number, minor: number, patch: number): boolean;

250

}

251

252

interface ServerVersion {

253

raw: string;

254

mariaDb: boolean;

255

major: number;

256

minor: number;

257

patch: number;

258

}

259

260

interface FieldInfo {

261

collation: Collation;

262

columnLength: number;

263

columnType: TypeNumbers;

264

scale: number;

265

type: Types;

266

flags: Flags;

267

db(): string;

268

table(): string;

269

name(): string;

270

string(): string | null;

271

buffer(): Buffer | null;

272

float(): number | null;

273

int(): number | null;

274

date(): Date | null;

275

}

276

```