2026/3/29 10:11:10
网站建设
项目流程
网站建设维护价格,wordpress图片水印插件,如何做木工雕刻机网站,网站标准字体在使用 mysql2/promise 的 createPool 时#xff0c;仅仅调用 createPool 是不会立即去连接数据库的。它是“懒加载”的#xff0c;只有在执行第一次查询或者手动请求连接时#xff0c;才会真正尝试建立连接。
要判断连接是否正确以及数据库是否存在#xff0c;推荐以下两种…在使用mysql2/promise的createPool时仅仅调用createPool是不会立即去连接数据库的。它是“懒加载”的只有在执行第一次查询或者手动请求连接时才会真正尝试建立连接。要判断连接是否正确以及数据库是否存在推荐以下两种方式方法一手动获取并释放一个连接推荐这是最标准的方法。通过调用pool.getConnection()你可以触发一次真实的连接尝试。importmysqlfrommysql2/promise;asyncfunctioncheckConnection(){letpoolmysql.createPool({host:configData.db_host,user:configData.db_user,database:configData.db_database,password:configData.db_password,waitForConnections:true,connectionLimit:10,queueLimit:0});try{// 尝试获取一个连接constconnectionawaitpool.getConnection();console.log(数据库连接成功);// 释放连接回连接池connection.release();returnpool;}catch(err){// 判断错误类型if(err.codeER_BAD_DB_ERROR){console.error(错误数据库不存在);}elseif(err.codeER_ACCESS_DENIED_ERROR){console.error(错误用户名或密码错误);}elseif(err.codeECONNREFUSED){console.error(错误无法连接到数据库服务器IP或端口错误);}else{console.error(连接失败错误代码err.code);console.error(err.message);}returnnull;}}constmyPoolawaitcheckConnection();方法二执行一个简单的测试查询如果你不想手动获取连接可以直接执行一个极简查询如SELECT 1。try{// 这种方式也会触发一次连接请求awaitpool.query(SELECT 1);console.log(数据库连接验证通过);}catch(err){if(err.codeER_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. 先不指定数据库连接到服务器constpoolWithoutDBmysql.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. 然后创建正式带数据库名的 poolconstpoolmysql.createPool({...configData});总结要判断连接情况请在初始化后立刻执行一次await pool.getConnection()并捕获err.code ER_BAD_DB_ERROR来识别数据库不存在的情况。