今天在开发的时候使用下面的JDBC连接数据库进行测试:
jdbc:mysql://localhost:3306/lsf_test?createDatabaseIfNotExist=true
后面的createDatabaseIfNotExist
参数会自动创建数据库,但启动的时候出现下面的错误提示:
Can't create database XXX (errno: 2)
刚开始以为是JDBC的问题,后来直接连接到数据库上创建数据库依然出现上述的提示,并且只能看到 information_schema
这个数据库,像 mysql
和 performance_schema
等数据库都无法显示。
登录数据库的用户使用的是root账号,检查了一下用户的权限都是最高的。
执行 select @@datadir;
,找到数据库的数据目录,然后执行 sudo chown -R <current_user> /your/mysql/data
命令(其中current_user是当前登录的用户,后面的目录是MySQL的数据目录,执行完成之后依然出错。
考虑到我使用的是用于单元测试的embedded mysql,因此删除了整个数据库文件之后,重试依然出错。
在近乎绝望的情况下,偶然在MySQL官方论坛上发现了这个帖子 https://forums.mysql.com/read.php?10,229941,229995#msg-229995,尝试重启了一下电脑,之后竟然就正常了。
参考资料:
ERROR 1006 (HY000) Can't create database (errno: 13) MySQL 5.6.12
mysql> create database test; ERROR 1006 (HY000): Can't create database 'test' (errno: 2)
ERROR 1006 (HY000): Can't create database XXX (errno: 2)