You cannot even start mysqld after changing the lower_case_table_names parameter other than 1 , which is the default.
0 => You should not set lower_case_table_names to 0 if you use MySQL on a system where the data directory is case-insensitive on the file system (for example, on Windows or macOS). This is an unsupported combination that can lead to a hang.
But try changing it to 2:
C: \ Program Files \ MySQL \ MySQL Server 8.0 \ bin> mysqld --defaults-file = "C: \ Program Files \ MySQL \ MySQL Server 8.0 \ my.ini"
ERROR [MY-011087] [Server, Different lower_case_table_names settings for server ('2') and data dictionary ('1'). ERROR [MY-010020] [Server, Data Dictionary initialization failed.
After initialization, you cannot change this parameter. Therefore, lower_case_table_names must be set with --initialize .
It is forbidden to start the server with the lower_case_table_names parameter which is different from the parameter used during server initialization. The restriction is necessary because the mappings used by the various fields of the data dictionary table are based on the setting defined during server initialization, and restarting the server with another parameter will lead to inconsistencies regarding how identifiers are ordered and compared.
mysqld --initialize - console --lower_case_table_names = 2
Then you will get the following error in the workbench after initializing the server again with lower_case_table_names=2 :
A server configuration problem was detected. The server is in a system that does not properly support the selected lower_case_table_names option value. Some problems may occur.
show variables like lower_case_table_names ;
+------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_table_names | 2 |
So, the conclusion: on Windows, leave the value 1, because 0 or 2 will not work or, as they put it, some problems may arise.
However, I do have the names of my database and tables that appear with capital letters. Which really doesn't do much, because the comparison will always be:
# If set to 1, table names are stored in lowercase on disk and comparisons are not case sensitive.
Nicholas