mysql数据库中的表不存在,可以查看的问题
程序员文章站
2024-03-19 18:57:22
...
先说说起因吧,我在使用super-diamond的时候发现创建项目的时候不成功,到后台查看日志之后发现是Table 'edu_diamond.conf_user' doesn't exist
于是乎打开navcat发现表都是在的呀。这就很奇怪了,后来查询资料知道原来linux下默认的表名是区分大小的。
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'edu_diamond.conf_user' doesn't exist
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.7.0_76]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) ~[na:1.7.0_76]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.7.0_76]
at java.lang.reflect.Constructor.newInstance(Constructor.java:526) ~[na:1.7.0_76]
at com.mysql.jdbc.Util.handleNewInstance(Util.java:408) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.Util.getInstance(Util.java:383) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1062) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4226) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4158) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2615) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2776) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2840) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082) ~[mysql-connector-java-5.1.31.jar:na]
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2212) ~[mysql-connector-java-5.1.31.jar:na]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:2714) ~[druid-1.0.7.jar:1.0.7]
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:465) ~[druid-1.0.7.jar:1.0.7]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:2711) ~[druid-1.0.7.jar:1.0.7]
at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeQuery(PreparedStatementProxyImpl.java:132) ~[druid-1.0.7.jar:1.0.7]
at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:227) ~[druid-1.0.7.jar:1.0.7]
at org.springframework.jdbc.core.JdbcTemplate$1.doInPreparedStatement(JdbcTemplate.java:646) ~[spring-jdbc-3.2.12.RELEASE.jar:3.2.12.RELEASE]
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:589) ~[spring-jdbc-3.2.12.RELEASE.jar:3.2.12.RELEASE]
... 51 common frames omitted
1、查看问题
show VARIABLES LIKE '%case%'
lower_case_table_names是0说明是区分大小的
2、解决问题
找到mysql的配置文件/etc/my.cnf在[mysqld]下增加
lower_case_table_names=1
service mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]
再试试发现居然还是不行,还是报Table 'edu_diamond.conf_user' doesn't exist
3、解决问题
想了想反正没招了,那我把数据库删掉从新建总可以了吧,嘿,我还没想到现在删数据库都不让我删了Error dropping database (can't rmdir './edu_diamond', errno: 39)
好惆怅啊
还是去找老外,google了下,找到下面这篇文章
可以去看看这个MySQL: Error dropping database (errno 13; errno 17; errno 39)
还是老外靠谱呀,一个老外说到是mysql的bug,找到问题了就好办了
- 将
lower_case_table_names
改0重启mysql - 备份数据库edu_diamond
- 删除数据库edu_diamond
- 将
lower_case_table_names
改1重启mysql - 恢复数据库edu_diamond
- 完美解决
上一篇: 有限状态机的应用
推荐阅读
-
mysql数据库中的表不存在,可以查看的问题
-
查询Mysql数据库中数据量最大的数据表
-
MySQL数据库查看数据表占用空间大小和记录数的方法
-
mysql数据库中的information_schema和mysql可以删除吗?
-
修改MySQL数据库中表和表中字段的编码方式的方法
-
MySQL数据库查看数据表占用空间大小和记录数的方法
-
mysql数据库中的information_schema和mysql可以删除吗?
-
修改MySQL数据库中表和表中字段的编码方式的方法
-
MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句
-
MySQL中查询所有数据库占用磁盘空间大小和单个库中所有表的大小的sql语句