This has been part of the underlying functionality of mysql for a while. At least in all versions of 5.xIn MySQL, databases correspond to directories within the data directory. Each table within a database corresponds to at least one file within the database directory (and possibly more, depending on the storage engine). Consequently, the case sensitivity of the underlying operating system plays a part in the case sensitivity of database and table names. This means database and table names are not case sensitive in Windows, and case sensitive in most varieties of Unix.Same quote exists inas well asAdditionally, if you want to change this functionality so that identifiers are not case sensitive, there is instructions to do so in manuals.explains in simple English the needed change.Edit the mysqld section of the my.cnf file. My.cnf can be found:under a LAMPP/XAMPP installation.: /opt/lampp/etc/my.cnfstand alone mysql server: /etc/mysql/my.cnfin that section Add the Line lowercasetablenames = 1.
9.2.2 Identifier Case SensitivityIn MySQL, databases correspond to directories within the datadirectory. Each table within a database corresponds to at leastone file within the database directory (and possibly more,depending on the storage engine).
Triggers also correspond tofiles. Consequently, the case sensitivity of the underlyingoperating system plays a part in the case sensitivity ofdatabase, table, and trigger names. This means such names arenot case-sensitive in Windows, but are case-sensitive in mostvarieties of Unix.
One notable exception is macOS, which isUnix-based but uses a default file system type (HFS+) that isnot case-sensitive. However, macOS also supports UFS volumes,which are case-sensitive just as on any Unix. Thesystemvariable also affects how the server handles identifier casesensitivity, as described later in this section.
NoteAlthough database, table, and trigger names are not casesensitive on some platforms, you should not refer to one ofthese using different cases within the same statement. Thefollowing statement would not work because it refers to atable both as mytable and asMYTABLE:mysql SELECT. FROM mytable WHERE MYTABLE.col=1;Column, index, stored routine, and event names are not casesensitive on any platform, nor are column aliases.However, names of logfile groups are case-sensitive. Thisdiffers from standard SQL.By default, table aliases are case-sensitive on Unix, but not soon Windows or macOS. The following statement would not work onUnix, because it refers to the alias both asa and as A:mysql SELECT colname FROM tblname AS aWHERE a. Colname = 1 OR A. Colname = 2;However, this same statement is permitted on Windows.
Mysql Case Sensitive Table Names
To avoidproblems caused by such differences, it is best to adopt aconsistent convention, such as always creating and referring todatabases and tables using lowercase names. This convention isrecommended for maximum portability and ease of use.How table and database names are stored on disk and used inMySQL is affected by thesystemvariable, which you can set when starting.can takethe values shown in the following table. This variable doesnot affect case sensitivity of triggeridentifiers. On Unix, the default value ofis 0. OnWindows, the default value is 1. On macOS, the default value is2.
ValueMeaning0Table and database names are stored on disk using the lettercasespecified in the or statement. Name comparisons are casesensitive. You should not set thisvariable to 0 if you are running MySQL on a system thathas case-insensitive file names (such as Windows ormacOS). If you force this variable to 0 withon a case-insensitive file system and accessMyISAM tablenames using differentlettercases, index corruption may result.1Table names are stored in lowercase on disk and name comparisons are notcase-sensitive.
MySQL converts all table names tolowercase on storage and lookup. This behavior alsoapplies to database names and table aliases.2Table and database names are stored on disk using the lettercasespecified in the or statement, but MySQL converts them tolowercase on lookup. Name comparisons are not casesensitive.
This works only on filesystems that are not case-sensitive!InnoDB table names and view names arestored in lowercase, as forlowercasetablenames=1.If you are using MySQL on only one platform, you do not normallyhave to change thevariablefrom its default value. However, you may encounter difficultiesif you want to transfer tables between platforms that differ infile system case sensitivity. For example, on Unix, you can havetwo different tables named mytable andMYTABLE, but on Windows these two names areconsidered identical. To avoid data transfer problems arisingfrom lettercase of database or table names, you have twooptions.Use lowercasetablenames=1 on allsystems. The main disadvantage with this is that when youuse or, you do notsee the names in their original lettercase.Use lowercasetablenames=0 on Unix andlowercasetablenames=2 on Windows.
Mysql Remove Case Sensitive Iphone
Thispreserves the lettercase of database and table names. Thedisadvantage of this is that you must ensure that yourstatements always refer to your database and table nameswith the correct lettercase on Windows. If you transfer yourstatements to Unix, where lettercase is significant, they donot work if the lettercase is incorrect.Exception: If you are usingInnoDB tables and you are trying to avoidthese data transfer problems, you should setto 1on all platforms to force names to be converted tolowercase.If you plan to set thesystemvariable to 1 on Unix, you must first convert your old databaseand table names to lowercase before stoppingand restarting it with the newvariable setting. To do this for an individual table, use:RENAME TABLE T1 TO t1;To convert one or more entire databases, dump them beforesetting,then drop the databases, and reload them after setting.Use to dump each database:mysqldump -databases db1 db1.sqlmysqldump -databases db2 db2.sql.Do this for each database that must be recreated.Use DROP DATABASE to drop each database.Stop the server, set, andrestart the server.Reload the dump file for each database. Becauseisset, each database and table name will be converted tolowercase as it is recreated:mysql.