使用TypeORM连接SQL Server LocalDB失败,报错getaddrinfo ENOTFOUND
解决TypeORM连接SQL Server LocalDB的问题
错误原因
getaddrinfo ENOTFOUND (localdb) 错误表明TypeORM使用的MSSQL驱动无法通过常规host解析逻辑连接LocalDB——LocalDB是SQL Server轻量本地实例,不依赖TCP/IP连接,需要专用的连接配置。
解决方案
1. 安装适配驱动
LocalDB需使用msnodesqlv8驱动替代默认的tedious,执行安装命令:
npm install msnodesqlv8 --save
2. 修改TypeORM配置
以下两种配置方式均可解决连接问题:
方式一:直接使用连接字符串
绕过host字段,用完整的SQL Server连接字符串配置:
import { DataSourceOptions, DataSource } from 'typeorm'; export const dataSourceOptions: DataSourceOptions = { type: 'mssql', connectionString: 'Server=(LocalDB)\\MSSQLLocalDB;Database=TestDb;Trusted_Connection=True;TrustServerCertificate=True;', synchronize: false, logging: true, entities: ['dist/persistence/entities/*.entity{.ts,.js}'], migrations: ['dist/persistence/migrations/*{.ts,.js}'], migrationsTableName: '_DbMigrations', migrationsRun: true, }; const dataSource = new DataSource(dataSourceOptions); export default dataSource;
方式二:配置实例名称
移除host字段,通过options.instanceName指定LocalDB实例:
import { DataSourceOptions, DataSource } from 'typeorm'; export const dataSourceOptions: DataSourceOptions = { type: 'mssql', database: 'TestDb', synchronize: false, logging: true, options: { instanceName: 'MSSQLLocalDB', trustServerCertificate: true, trustedConnection: true, // 启用Windows身份验证 }, entities: ['dist/persistence/entities/*.entity{.ts,.js}'], migrations: ['dist/persistence/migrations/*{.ts,.js}'], migrationsTableName: '_DbMigrations', migrationsRun: true, }; const dataSource = new DataSource(dataSourceOptions); export default dataSource;
3. 验证LocalDB实例有效性
确保MSSQLLocalDB实例存在:
- 打开命令提示符执行:
sqllocaldb info MSSQLLocalDB
- 若实例不存在,执行创建命令:
sqllocaldb create MSSQLLocalDB
内容的提问来源于stack exchange,提问作者Yeasin Abedin
相关产品推荐
相关产品推荐

