Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java “无法修复”;未知表格“;来自JOOQ查询的异常_Java_Mysql_Sql_Jooq - Fatal编程技术网

Java “无法修复”;未知表格“;来自JOOQ查询的异常

Java “无法修复”;未知表格“;来自JOOQ查询的异常,java,mysql,sql,jooq,Java,Mysql,Sql,Jooq,我很难从我知道存在的数据库中获取数据,我知道数据库的格式 在下面的代码段中,“if conn!=null”只是一个测试,用于验证数据库名、表名等是否正确,并且它们确实进行了验证 下面的最后一行是生成异常的内容 public static HashMap<Integer, String> getNetworkMapFromRemote(DSLContext dslRemote, Connection conn, Logger logger) { HashMap<Integ

我很难从我知道存在的数据库中获取数据,我知道数据库的格式

在下面的代码段中,“if conn!=null”只是一个测试,用于验证数据库名、表名等是否正确,并且它们确实进行了验证

下面的最后一行是生成异常的内容

public static HashMap<Integer, String> getNetworkMapFromRemote(DSLContext dslRemote, Connection conn, Logger logger) {
    HashMap<Integer,String> remoteMap = new HashMap<Integer, String>();
    // conn is only used for test purposes
    if (conn != null) {
        // test to be sure database is ok
        try
        {
            ResultSet rs = conn.createStatement().executeQuery("SELECT networkid, name FROM network");
            while (rs.next()) {
                System.out.println("TEST: nwid " + rs.getString(1) + " name " + rs.getString(2));
            }
            rs.close();
        }
        catch ( SQLException se )
        {
            logger.trace("getNetworksForDevices SqlException: " + se.toString());
        }
    }
    // ----------- JOOQ problem section ------------------------
    Network nR = Network.NETWORK.as("network");
    // THE FOLLOWING LINE GENERATES THE UNKNOWN TABLE 
    Result<Record2<Integer, String>> result      = dslRemote.select( nR.NETWORKID, nR.NAME ).fetch();
为了完整性,这里是JOOQ为网络生成的类文件的一部分

package com.wbcnvi.intravue.generated.tables;
@javax.annotation.Generated(value    = { "http://www.jooq.org", "3.3.1" },
                            comments = "This class is generated by jOOQ")
@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Network extends org.jooq.impl.TableImpl<com.wbcnvi.intravue.generated.tables.records.NetworkRecord> {
    private static final long serialVersionUID = 1729023198;
    public static final com.wbcnvi.intravue.generated.tables.Network NETWORK = new com.wbcnvi.intravue.generated.tables.Network();
    @Override
    public java.lang.Class<com.wbcnvi.intravue.generated.tables.records.NetworkRecord> getRecordType() {
        return com.wbcnvi.intravue.generated.tables.records.NetworkRecord.class;
    }
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.Integer> NWID = createField("NwId", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.Integer> NETWORKID = createField("NetworkId", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.String> NAME = createField("Name", org.jooq.impl.SQLDataType.CHAR.length(40).nullable(false).defaulted(true), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.Integer> USECOUNT = createField("UseCount", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.Integer> NETGROUP = createField("NetGroup", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.String> AGENT = createField("Agent", org.jooq.impl.SQLDataType.CHAR.length(16), this, "");

    public Network() {
        this("network", null);
    }
    public Network(java.lang.String alias) {
        this(alias, com.wbcnvi.intravue.generated.tables.Network.NETWORK);
    }
    ..........
package com.wbcnvi.intraue.generated.tables;
@javax.annotation.Generated(值={”http://www.jooq.org", "3.3.1" },
comments=“该类由jOOQ生成”)
@SuppressWarnings({“all”、“unchecked”、“rawtypes”})
公共类网络扩展org.jooq.impl.TableImpl{
私有静态最终长serialVersionUID=1729023198;
public static final com.wbcnvi.intraue.generated.tables.Network Network=new com.wbcnvi.intraue.generated.tables.Network();
@凌驾
public java.lang.Class getRecordType(){
返回com.wbcnvi.intraue.generated.tables.records.NetworkRecord.class;
}
public final org.jooq.TableField NWID=createField(“NWID”,org.jooq.impl.SQLDataType.INTEGER.nullable(false),this,”;
public final org.jooq.TableField NETWORKID=createField(“NETWORKID”,org.jooq.impl.SQLDataType.INTEGER.nullable(false)。defaulted(true),this,”;
public final org.jooq.TableField NAME=createField(“NAME”,org.jooq.impl.SQLDataType.CHAR.length(40).nullable(false).defaulted(true),this,”;
public final org.jooq.TableField USECOUNT=createField(“USECOUNT”,org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true),this,”;
public final org.jooq.TableField NETGROUP=createField(“NETGROUP”,org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true),this,”;
public final org.jooq.TableField AGENT=createField(“AGENT”,org.jooq.impl.SQLDataType.CHAR.length(16),this,”;
公共网络(){
此(“网络”,空);
}
公共网络(java.lang.String别名){
这(别名com.wbcnvi.intraue.generated.tables.Network.Network);
}
..........
基于“unknown table”异常,我认为连接到错误的数据库或服务器时出现了问题,但控制台输出对于JDBC查询是正确的


任何想法都值得赞赏,可能是其他原因造成的,或者DSLContext无效(但我认为这会产生一个不同的例外)。

答案很简单,我没有包括.from()方法

Result-Result=dslmote.select(nR.NETWORKID,nR.NAME)
。由(北区)
.fetch();

这就是为什么表是未知的,我从来没有把from方法放进去。

是的,这当然有帮助:-)
package com.wbcnvi.intravue.generated.tables;
@javax.annotation.Generated(value    = { "http://www.jooq.org", "3.3.1" },
                            comments = "This class is generated by jOOQ")
@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" })
public class Network extends org.jooq.impl.TableImpl<com.wbcnvi.intravue.generated.tables.records.NetworkRecord> {
    private static final long serialVersionUID = 1729023198;
    public static final com.wbcnvi.intravue.generated.tables.Network NETWORK = new com.wbcnvi.intravue.generated.tables.Network();
    @Override
    public java.lang.Class<com.wbcnvi.intravue.generated.tables.records.NetworkRecord> getRecordType() {
        return com.wbcnvi.intravue.generated.tables.records.NetworkRecord.class;
    }
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.Integer> NWID = createField("NwId", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.Integer> NETWORKID = createField("NetworkId", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.String> NAME = createField("Name", org.jooq.impl.SQLDataType.CHAR.length(40).nullable(false).defaulted(true), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.Integer> USECOUNT = createField("UseCount", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.Integer> NETGROUP = createField("NetGroup", org.jooq.impl.SQLDataType.INTEGER.nullable(false).defaulted(true), this, "");
    public final org.jooq.TableField<com.wbcnvi.intravue.generated.tables.records.NetworkRecord, java.lang.String> AGENT = createField("Agent", org.jooq.impl.SQLDataType.CHAR.length(16), this, "");

    public Network() {
        this("network", null);
    }
    public Network(java.lang.String alias) {
        this(alias, com.wbcnvi.intravue.generated.tables.Network.NETWORK);
    }
    ..........
Result<Record2<Integer, String>> result = dslRemote.select( nR.NETWORKID, nR.NAME )
    .from(nR)
    .fetch();