mirror of
				https://github.com/louislam/uptime-kuma.git
				synced 2025-10-31 19:39:20 +08:00 
			
		
		
		
	Merge pull request #3017 from chakflying/v2/fix/external-database-setup
[2.0] Fix: Add external mariaDB setup
This commit is contained in:
		| @@ -7,6 +7,7 @@ const knex = require("knex"); | ||||
| const { PluginsManager } = require("./plugins-manager"); | ||||
| const path = require("path"); | ||||
| const { EmbeddedMariaDB } = require("./embedded-mariadb"); | ||||
| const mysql = require("mysql2/promise"); | ||||
|  | ||||
| /** | ||||
|  * Database & App Data Folder | ||||
| @@ -188,6 +189,19 @@ class Database { | ||||
|                 } | ||||
|             }; | ||||
|         } else if (dbConfig.type === "mariadb") { | ||||
|             if (!/^\w+$/.test(dbConfig.dbName)) { | ||||
|                 throw Error("Invalid database name. A database name can only consist of letters, numbers and underscores"); | ||||
|             } | ||||
|  | ||||
|             const connection = await mysql.createConnection({ | ||||
|                 host: dbConfig.hostname, | ||||
|                 port: dbConfig.port, | ||||
|                 user: dbConfig.username, | ||||
|                 password: dbConfig.password, | ||||
|             }); | ||||
|  | ||||
|             await connection.execute("CREATE DATABASE IF NOT EXISTS " + dbConfig.dbName + " CHARACTER SET utf8mb4"); | ||||
|  | ||||
|             config = { | ||||
|                 client: "mysql2", | ||||
|                 connection: { | ||||
|   | ||||
| @@ -614,7 +614,7 @@ let needSetup = false; | ||||
|                     throw new Error("Password is too weak. It should contain alphabetic and numeric characters. It must be at least 6 characters in length."); | ||||
|                 } | ||||
|  | ||||
|                 if ((await R.count("user")) !== 0) { | ||||
|                 if ((await R.knex("user").count("id as count").first()).count !== 0) { | ||||
|                     throw new Error("Uptime Kuma has been initialized. If you want to run setup again, please delete the database."); | ||||
|                 } | ||||
|  | ||||
| @@ -1683,7 +1683,7 @@ async function initDatabase(testMode = false) { | ||||
|     } | ||||
|  | ||||
|     // If there is no record in user table, it is a new Uptime Kuma instance, need to setup | ||||
|     if ((await R.count("user")) === 0) { | ||||
|     if ((await R.knex("user").count("id as count").first()).count === 0) { | ||||
|         log.info("server", "No user, need setup"); | ||||
|         needSetup = true; | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user