andyyuan 发表于 2018-8-10 17:20:01

在线表单开发的数据库导入表单-生成表单报错-找不到表

本帖最后由 andyyuan 于 2018-8-10 17:21 编辑

jeecg 3.7.8版本的 在线表单开发的数据库导入表单-生成表单报错-找不到表。 我看框架里面做了大写转换,但是mysql的数据字典里面的 表名称,是小写, 所以找不到表,,, 可能是MySQL版本的差异引起的,框架可以把字段和变量都做下转换。
MySQL server 版本:5.7.23
框架代码段:JeecgReadTable.java
public List<Columnt> readOriginalTableColumn(String tableName)
    throws Exception
{
    List columntList = new ArrayList();
    try {
      Class.forName(CodeResourceUtil.DIVER_NAME);
      this.b = DriverManager.getConnection(CodeResourceUtil.URL, CodeResourceUtil.USERNAME, CodeResourceUtil.PASSWORD);
      this.c = this.b.createStatement(1005, 1007);

      if (CodeResourceUtil.DATABASE_TYPE.equals("mysql")) {
      this.sql = MessageFormat.format("select column_name,data_type,column_comment,numeric_precision,numeric_scale,character_maximum_length,is_nullable nullable from information_schema.columns where table_name = {0} and table_schema = {1}", new Object[] { a.f(tableName.toUpperCase()), a.f(CodeResourceUtil.DATABASE_NAME) });
      }


异常信息: [本地]    --表名:equipment_repair_doc
全局处理异常捕获:
java.lang.Exception: 该表不存在或者表中没有字段
      at org.jeecgframework.codegenerate.database.JeecgReadTable.readOriginalTableColumn(JeecgReadTable.java:333)
      at org.jeecgframework.web.cgform.controller.trans.CgformTransController.transEditor(CgformTransController.java:135)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

admin 发表于 2018-8-10 17:21:58

把数据库改成不区分大小写

andyyuan 发表于 2018-8-10 17:27:50

admin 发表于 2018-8-10 17:21 static/image/common/back.gif
把数据库改成不区分大小写

可以通过修改数据库配置达到,不过从程序的健壮性的角度考虑,建议基于框架层考虑大小写问题。

admin 发表于 2018-8-10 17:29:51

我们是兼容多数据库,特别是oracle,所以默认是大写。其他数据库请放开大小写限制。
有个性化的需求可以自行改造
页: [1]
查看完整版本: 在线表单开发的数据库导入表单-生成表单报错-找不到表