NutzCN Logo
问答 nutz查询不兼容mysql5.8 system字段
发布于 390天前 作者 qq_0e08b035 422 次浏览 复制 上一个帖子 下一个帖子
标签:

框架原本使用的是mysql5.6 由于环境安全问题mysql5.6 升级至 mysql5.8
升级后出现了有个sql语句不识别
有个表里有个字段是:system
nutz 的 query(cnd) 查询生成的sql语句是:

select * from sys_menu where system = 'platform'

结果报错:

[SQL]select * from sys_menu where system = 'platform'

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'system = 'platform'' at line 1

由于框架的代码比较多了,这块的业务关联的地方也很多 所以有没有什么解决办法 或者让query(cnd)出来的sql带上 ``号什么的

4 回复

在MainSetup.init方法里面调用一下下面的其中一句, 看看哪个能work

Daos.CHECK_COLUMN_NAME_KEYWORD = true;
Daos.FORCE_WRAP_COLUMN_NAME = true;

这个框架比较老了 大鲨鱼之前做过改造 数据层用的nutz的,里面没有MainSetup.init这个文件 @wendal

Setup类的init方法

Daos.FORCE_WRAP_COLUMN_NAME 强行列名称 最好别加 不然有意想不到的错
[DEBUG] 15:48:58.737 [DubboServerHandler-192.168.175.1:18061-thread-13] org.nutz.dao.impl.sql.run.NutDaoExecutor - SQLException
java.sql.SQLException: io.seata.common.exception.ShouldNeverHappenException
at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:105)
at io.seata.rm.datasource.exec.ExecuteTemplate.execute(ExecuteTemplate.java:47)
at io.seata.rm.datasource.PreparedStatementProxy.execute(PreparedStatementProxy.java:54)
at org.nutz.dao.impl.sql.run.NutDaoExecutor._runPreparedStatement(NutDaoExecutor.java:311)

添加回复
请先登陆
回到顶部