再将Windows下面的Mysql中的数据迁移到Ubuntu下之后,EF提示找不到表。几经探索才发现Windows下面大小写不敏感,Linux下面Mysql大小写敏感。
按照官方文档提示将lower_case_table_names
的值修改为1,但是重新启动Mysql报以下错误:
Job for mysql.service failed because the control process exited with error code.
See "systemctl status mysql.service" and "journalctl -xe" for details.
最终通过https://www.jianshu.com/p/d3cc28c3ed42这篇文章解决了问题,特此记录。
注意:在安装Mysql 8.0.15时测试通过,能通过此方法关闭表名大小写不敏感,但是在Mysql8.0.16下设置失败,无法启动Mysql。
一、安装Mysql 去https://dev.mysql.com/downloads/repo/apt/下载deb包。也可以用wget直接下载:wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.12-1_all.deb
sudo apt-get update
安装Mysql
sudo apt-get install mysql-server
选好之后选择OK退出
选择认证方式,更具自己需要选择。
查看服务是否启动
ps -ef | grep mysql
启动之后应该是这样的
mysql 29734 1 0 11:34 ? 00:00:10 /usr/sbin/mysqld
没有启动的话,手动启动
sudo service mysql restart
二、忽略表名大小写
如果使用默认安装路径,mysqldump命令直接使用。手动设置了安装目录,进入目录,终端 bin/mysqldump 代替 mysqldump
将初始库mysql导出到桌面,保存为mysqldump.sql文件,弹出提示时输入前面填写的root密码。
一定不要忘了这这步,最开始我是直接删除Mysql的数据存放目录。结果导致修改了lower_case_table_namesq
启动数据没有用户之类的数据。
导出Myslq数据库
mysqldump -h localhost -u root -p mysql > ~/mysqldump.sql
停止服务
sudo service mysql stop
删除 mysql的数据文件
sudo rm -rf /var/lib/mysql
创建同名文件夹并设置权限
sudo mkdir /var/lib/mysql
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod 750 /var/lib/mysql
编辑配置文件
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]
下添加lower_case_table_names=1
[mysqld]
lower_case_table_names=1
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
然后手动初始化MySQL。 defaults-file
默认安装路径为/etc/mysql/my.cnf
,手动安装需要更改。
sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize lower_case_table_names=1 --user=mysql --console
再次查看/var/lib/mysql
目录权限
ll -d /var/lib/mysql
如以下则没有问题
drwxr-x--- 5 mysql mysql 4096 12月 25 13:11 /var/lib/mysql/
如果群组和权限不一致再次执行
sudo chown -R mysql:mysql /var/lib/mysql
sudo chmod 750 /var/lib/mysql
重新开启数据库服务
sudo service mysql restart
登陆mysql,密码处直接回车
mysql -u root -p
此时没有密码,直接回车登录。
登录后查询是否更改
SHOW VARIABLES where Variable_name like 'lower%';
mysql> SHOW VARIABLES where Variable_name like 'lower%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
2 rows in set (0.01 sec)
没有问题。
查看数据库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.01 sec)
发现少了sys数据库。
切换到mysql
库 ,导入前面导出的mysql
库
mysql> use mysql
mysql> source /home/ubuntu/mysqldump.sql
Query OK, 0 rows affected (0.00 sec)
.....
.....
退出Mysql
mysql> exit;
Bye
执行mysql_upgrade
命令创建sys
库
sudo mysql_upgrade
登陆mysql测试,root密码是安装时设置的密码。
文章评论