Fix XAMPP MySQL shutdown error

Fix an annoying MariaDB shutdown error that sometimes occurs when using XAMPP.

# Fix XAMPP MySQL error: Repeatedly unexpected MySQL shutdown
# More info: https://stackoverflow.com/a/61859561

require "array";
require "fileio";

const MYSQL_PATH string <= "C:/path/to/mysql";

global checkdir bool;
global enumres bool;

array arrExcludedFolders string 4 (
    "mysql", 
    "performance_schema", 
    "phpmyadmin", 
    "test"
);

print "Fixing files and folders...";

dexists "%MYSQL_PATH/data_old" checkdir;
if (%checkdir, -eq, true) {
    sys {rmdir /S /Q "%MYSQL_PATH/data_old"};
};

sys {move /Y "%MYSQL_PATH/data" "%MYSQL_PATH/data_old"};
sys {xcopy "%MYSQL_PATH/backup" "%MYSQL_PATH/data/" /E /V /I /Y};

function IsExcludeFolder bool(folderName string)
{
    result false;
    
    for (count, 0, %arrExcludedFolders.length, -inc) {
        if (%folderName, -eq, %arrExcludedFolders[%count]) {
            result true;
        };
    };
};

function CopyDbFolders int(baseObject string, iteratedObject string)
{
    local dirtype bool;
    local exclexists bool;
    
    fdisdir "%baseObject%iteratedObject" dirtype;
    if (%dirtype, -eq, true) {
        call IsExcludeFolder("%iteratedObject") => exclexists;
    
        if (%exclexists, -eq, false) {
            sys {xcopy "%baseObject%iteratedObject" "%MYSQL_PATH/data/%iteratedObject" /E /V /I /Y};
        };
    };

    result 1;
};

denum {%MYSQL_PATH/data_old/} "*.*" "CopyDbFolders" enumres;

sys {robocopy "%MYSQL_PATH/data_old" "%MYSQL_PATH/data" "ibdata1" /NDL /NJH /NJS /NC /NS /IS};

print "Done.";

Go back