Today I was trying to set the sql_mode=TRADITIONAL
permanently but all efforts were in vain not because there are wrong answers but due to the way xampp configured the mysqld
startup script. Let me explain in detail.
Of course you all try our best before coming to SO, so do I. I followed the comments in A:\xampp\mysql\bin\my.ini
(given below):
# You can copy this file to
# A:/xampp/mysql/bin/my.cnf to set global options,
# mysql-data-dir/my.cnf to set server-specific options (in this
# installation this directory is A:/xampp/mysql/data) or
# ~/.my.cnf to set user-specific options.
So I tried A:/xampp/mysql/bin/my.cnf
, A:/xampp/mysql/data/my.cnf
but it wasn't even reading those files. Hours wasted in creating .cnf
files in above locations. Worst part was it wasn't even working if I edit those my.ini
files (i.e A:/xampp/mysql/bin/my.ini
and A:/xampp/mysql/data/my.ini
)
Then I checked all the folders to know how that control panel works and found thta xampp uses the mysql_start.bat
script to start the msql deamon. Here is the bat file contents:
@echo off
cd /D %~dp0
echo Diese Eingabeforderung nicht waehrend des Running beenden
echo Please dont close Window while MySQL is running
echo MySQL is trying to start
echo Please wait ...
echo MySQL is starting with mysql\bin\my.ini (console)
mysql\bin\mysqld --defaults-file=mysql\bin\my.ini --standalone
if errorlevel 1 goto error
goto finish
:error
echo.
echo MySQL konnte nicht gestartet werden
echo MySQL could not be started
pause
:finish
Here we can clearly see that it is explicitly using the argument --defaults-file
to tell MySQL daemon from where to read the files. Now I hope you have plenty of ideas to fix this.
Note: I've already added A:/xampp/mysql/bin
to my PATH
.
Now we have several options as I've mentioned below:
- Add the exact path to the
--defaults-file
(i.e. --defaults-file=mysql\bin\my.cnf
)
- You can just ommit the flag and let mysqld read from default locations (can see those using
mysql --help
) Now you've 2 options:
- either edit those default
my.ini
files or
- follow the comments to create
my.cnf
files according to your installation
directory.
I just deleted that --defaults-file
flag and let it run with MySQL's default configuration instead of xampp's. By the was I also have to change A:\xampp\mysql\data\my.ini
from this:
[mysqld]
datadir=C:/xampp/mysql/data
[client]
to
[mysqld]
datadir=A:\xampp\mysql\data
[client]
to update the data directory. After that I just created a my.conf
file in A:\xampp\mysql\data
(data dir). with sql_mode
option in it. It also worked with my.cnf
in the A:\xampp\mysql\bin
.
I have attached some screenshots for better understanding:
Updated data dir in A:\xampp\mysql\data\my.ini
:
(option 1) Add my.cnf
in A:\xampp\mysql\data
:
(option 2) Add my.cnf
in A:\xampp\mysql\bin
:
You may found another solution too. Hope you are able to fix whatever issue you have regarding those config files.