【MySQL】node.js 如何判断连接池是否正确连接上了?

在使用mysql2/promisecreatePool时,仅仅调用createPool是不会立即去连接数据库的。它是“懒加载”的,只有在执行第一次查询或者手动请求连接时,才会真正尝试建立连接。

要判断连接是否正确以及数据库是否存在,推荐以下两种方式:

方法一:手动获取并释放一个连接(推荐)

这是最标准的方法。通过调用pool.getConnection(),你可以触发一次真实的连接尝试。

importmysqlfrom'mysql2/promise';asyncfunctioncheckConnection(){letpool=mysql.createPool({host:configData.db_host,user:configData.db_user,database:configData.db_database,password:configData.db_password,waitForConnections:true,connectionLimit:10,queueLimit:0});try{// 尝试获取一个连接constconnection=awaitpool.getConnection();console.log('数据库连接成功!');// 释放连接回连接池connection.release();returnpool;}catch(err){// 判断错误类型if(err.code==='ER_BAD_DB_ERROR'){console.error('错误:数据库不存在!');}elseif(err.code==='ER_ACCESS_DENIED_ERROR'){console.error('错误:用户名或密码错误!');}elseif(err.code==='ECONNREFUSED'){console.error('错误:无法连接到数据库服务器(IP或端口错误)!');}else{console.error('连接失败,错误代码:'+err.code);console.error(err.message);}returnnull;}}constmyPool=awaitcheckConnection();

方法二:执行一个简单的测试查询

如果你不想手动获取连接,可以直接执行一个极简查询(如SELECT 1)。

try{// 这种方式也会触发一次连接请求awaitpool.query('SELECT 1');console.log('数据库连接验证通过');}catch(err){if(err.code==='ER_BAD_DB_ERROR'){console.error('数据库不存在');}else{console.error('连接失败:',err.message);}}

如何识别“数据库不存在”?

catch块中,你可以通过检查err.code属性来识别具体的错误:

  • ER_BAD_DB_ERROR(错误代码: 1049): 表示你指定的database在服务器上不存在。
  • ER_ACCESS_DENIED_ERROR(错误代码: 1045): 表示用户名或密码不对。
  • ENOTFOUND/EAI_AGAIN: 表示host地址解析失败。
  • ECONNREFUSED: 表示数据库服务没启动,或者端口号填错了。

进阶:如果数据库不存在,自动创建它

有时你希望程序启动时如果发现数据库不存在,就自动创建一个。这时候你创建 Pool 时不能指定 database,连接成功后再创建:

// 1. 先不指定数据库连接到服务器constpoolWithoutDB=mysql.createPool({host:configData.db_host,user:configData.db_user,password:configData.db_password});// 2. 执行创建命令awaitpoolWithoutDB.query(`CREATE DATABASE IF NOT EXISTS \`${configData.db_database}\``);// 3. 此时再关闭这个 pool,或者直接切换到目标数据库使用awaitpoolWithoutDB.end();// 4. 然后创建正式带数据库名的 poolconstpool=mysql.createPool({...configData});

总结

要判断连接情况,请在初始化后立刻执行一次await pool.getConnection(),并捕获err.code === 'ER_BAD_DB_ERROR'来识别数据库不存在的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1134561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型的技术生态——怎么理解大模型技术以及应用技术

文章阐述了以大模型为核心的技术生态,强调其需具备自然语言理解、创作和使用工具的能力。Agent智能体作为大模型的"手和脚",使其能够使用工具完成任务。大模型的本质是理解和生成能力的结合,应用过程需要强大的容错处理&#xff0c…

网络安全攻防秘籍,从零基础到精通,收藏这篇就够了!

互联网冲浪,谁还没遇到过几个“李鬼”?网络安全这玩意儿,就像天气预报,你永远不知道明天会下啥“妖风”。眼瞅着攻防演练就要开始了,咱们得赶紧抱紧这篇网络安全秘籍,教你见招拆招,成为赛博空间…

JAVA新手必看:找不到符号错误详解

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个交互式学习模块,通过简单示例解释找不到符号错误。包含:1) 变量作用域动画演示 2) 包导入交互练习 3) 常见错误模式匹配游戏。要求使用初学者友好语…

基于CRNN OCR的商业发票自动分类系统

基于CRNN OCR的商业发票自动分类系统 📖 项目背景与核心价值 在企业财务自动化、智能报销和税务管理等场景中,商业发票的结构化识别与分类是实现端到端流程自动化的关键一步。传统人工录入方式效率低、成本高、易出错,而通用OCR工具往往对中文…

无需专业设备:普通电脑运行CRNN OCR的秘诀

无需专业设备:普通电脑运行CRNN OCR的秘诀 📖 技术背景:OCR文字识别为何需要轻量化方案? 光学字符识别(OCR)技术在文档数字化、票据处理、信息提取等场景中扮演着核心角色。传统OCR系统多依赖高性能GPU和复…

NodePad++编辑完文本怎么转语音?拖入WebUI一键合成WAV文件

NodePad编辑完文本怎么转语音?拖入WebUI一键合成WAV文件 🎙️ Sambert-HifiGan 中文多情感语音合成服务 (WebUI API) 语音合成-中文-多情感:让文字“活”起来 在内容创作、有声书生成、智能客服等场景中,高质量的中文语音合成&am…

稀有符号在社交媒体中的创意应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个社交媒体符号生成器,用户可以选择平台(如Instagram、Twitter等),输入文案后,AI自动推荐并插入稀有符号&#xf…

1小时搞定AI聊天机器人:pip install+快马快速开发

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 构建一个基于Transformer的聊天机器人原型,要求:1. 自动生成包含pytorch、transformers等依赖的requirements.txt 2. 提供基础对话实现和API封装示例 3. 支…

CRNN OCR在医疗检验报告自动录入中的应用

CRNN OCR在医疗检验报告自动录入中的应用 📖 技术背景:OCR文字识别的演进与挑战 在数字化转型浪潮中,光学字符识别(OCR) 作为连接物理文档与数字信息的关键技术,正被广泛应用于金融、教育、政务和医疗等多个…

如何用AI快速搭建Kafka开发环境?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个自动化脚本,能够自动下载最新版本的Kafka,解压并配置必要的环境变量。脚本应包含启动Zookeeper和Kafka服务器的命令,并验证服务是否正常…

CRNN OCR模型训练指南:自定义数据集的fine-tuning

CRNN OCR模型训练指南:自定义数据集的fine-tuning 📖 项目简介 光学字符识别(OCR)是计算机视觉中一项基础而关键的技术,广泛应用于文档数字化、票据识别、车牌识别、智能办公等场景。随着深度学习的发展,…

语音合成行业应用全景图:哪些领域已实现规模化落地?

语音合成行业应用全景图:哪些领域已实现规模化落地? 🌐 技术背景与产业趋势 近年来,随着深度学习在语音处理领域的持续突破,语音合成(Text-to-Speech, TTS) 技术已从实验室走向大规模商业落地。…

中小学听力材料制作:Sambert-Hifigan批量生成标准化音频

中小学听力材料制作:Sambert-Hifigan批量生成标准化音频 引言:教育场景中的语音合成新范式 在中小学外语教学与语文学习中,高质量的听力材料是提升学生语言感知能力的关键工具。传统录音方式依赖专业播音员和录音设备,成本高、周…

基于CRNN OCR的竖排文字识别解决方案

基于CRNN OCR的竖排文字识别解决方案 📖 项目简介:高精度OCR为何选择CRNN? 在数字化转型浪潮中,光学字符识别(OCR)技术已成为连接物理文档与数字信息的核心桥梁。无论是发票扫描、证件录入还是古籍数字化…

Python多线程在电商价格监控中的实战应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个电商价格监控系统,使用Python多线程同时监控5个不同电商平台(京东、淘宝、拼多多等)上指定商品的价格变化。每个线程负责一个平台&…

DDORes.dll文件丢失找不到问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

OCR识别质量评估:CRNN模型效果分析

OCR识别质量评估:CRNN模型效果分析 📖 项目背景与OCR技术概述 光学字符识别(Optical Character Recognition, OCR)是将图像中的文字内容自动转换为可编辑文本的关键技术,广泛应用于文档数字化、票据识别、车牌提取、智…

Visual Studio 2019在企业级项目中的实战应用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个企业级项目管理模板,集成Visual Studio 2019与Azure DevOps,包含代码审查、自动化测试和CI/CD流程配置。支持多团队协作,提供项目进度跟…

传统开发vsAI生成:1024网站效率对比实验

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个用于效率对比的1024导航网站基准项目,要求:1.实现基本导航功能 2.包含用户系统 3.支持响应式布局 4.有完整的前后端交互。项目要包含两种实现方式&…

网络安全学习全攻略:从 0 到高手的必由之路,附:学习路径 + 工具包

想成为一名真正的黑客到底该怎么学? 从0开始又该从何学起呢? 很多人想学习网络安全,却不知道从何下手。别迷茫,这篇文章为你指明方向,无论你是零基础小白,还是有一定基础想提升的人,都能从中找…