首页 资讯 社群 我的社区 搜索

每日一坑:mysql的表名一定记得全部使用小写

高大上
2019-03-08 09:29:10

数据库中的表名请全部使用小写。mysql默认在window中是大小不敏感的,但是linux下大小的表名会找不到,并且默认不支持大小写修改,因为不敏感。修改时会提示表名已经存在,但是java是区分大小写的,所以提示表名找不到。

------------------------------------------------------------

我自己的项目IDP中在同步到2.3后出现了很多以前修正后的bug,虽然小半年没怎么动后端代码,也不应该出现这种情况。

复查后发现基本都是这种提示:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'stage2.assetTable' doesn't exist
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
	at com.mysql.jdbc.Util.getInstance(Util.java:408)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3976)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3912)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2486)

 

很显然,有表找不到。复查后发现全是因为表名有大写的。

而mysql自己的系统表中所有表名都是小写的,可见全小写,使用下划线分割才是正统

 

 

用户评论