因为您使用的文件系统不同,导致出现了这种情况。这可以解释为:
In 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).
Triggers also correspond to files. Consequently, the case sensitivity of the underlying operating system plays a part in the case sensitivity of database, table, and trigger names.
This means such names are not case-sensitive in Windows, but are case-sensitive in most varieties of Unix.
One notable exception is macOS, which is Unix-based but uses a default file system type (HFS+) that is not case-sensitive.
However, macOS also supports UFS volumes, which are case-sensitive just as on any Unix.
您可以在 MySQL 官方网站 这里 阅读更多相关内容。
您必须运行以下查询来检查大小写敏感性,以了解您的数据库的大小写敏感性:
SHOW VARIABLES LIKE "lower_case_table_names";
值为0(Linux上的默认值)表示名称比较区分大小写,值为1(Windows上的默认值)表示不区分大小写,而值为2(macOS上的默认值)也可以视为不区分大小写。
现在,如果查询结果为0,则需要更改lower_case_table_names
变量以使数据库不区分大小写。
请记得备份您的数据库,因为在更改此变量的值后,您的数据库可能无法正常运行。您可以在将其设置为不区分大小写后恢复数据库。使用以下命令备份数据库(并应在备份后删除它):
mysqldump -u username -p db_name > dump.sql
现在,您需要找到MySQL配置文件。配置文件可能位于以下位置:
/etc/mysql/my.cnf
或在。
/etc/mysql/mysql.conf.d/mysqld.cnf
你需要查找[mysqld],无论你在哪个文件中找到类似以下细节的信息(其中之一):
[mysqld]
user = mysql
pid-file = /***
socket = /***
port = ****
basedir = /***
datadir = /***
tmpdir = /tmp
lc-messages-dir = /****
编辑你的文件:
vi /etc/mysql/mysql.conf.d/mysqld.cnf
在 [mysqld] 下面粘贴一行
lower_case_table_names=1
。
你需要重启 MySQL:
sudo service mysql restart
您现在可以使用以下命令恢复您的数据库:
mysql -u username -p db_name < dump.sql
完成。干杯。