猿问

获取 Teradata 数据源连接的异常

我试图在我的控制器中注入数据源并使用那个(数据源)我想要连接对象。我正在使用 spring boot 我已经编写了两个配置类,一个用于 Oracle 连接,另一个用于 Teradata 连接


对于 oracle 一切正常,但对于创建 teradata 数据源,我无法确定任何好的示例,因此我的配置如下所示:


@Component

@Configuration

@ConfigurationProperties("application")

public class TeradataConfiguration {



@NotNull

    private String usernameTeradata;

@NotNull

private String passwordTeradata;


@NotNull

private String servernameTeradata;


@NotNull

private String charsetTeradata;


@NotNull

private String tmodeTeradata;


@NotNull

private String dsnameTeradata;


@NotNull

private String portTeradata;


@NotNull

private String timeoutTeradata;



public void setUsernameTeradata(String usernameTeradata) {

    this.usernameTeradata = usernameTeradata;

}



public void setPasswordTeradata(String passwordTeradata) {

    this.passwordTeradata = passwordTeradata;

}



public void setServernameTeradata(String servernameTeradata) {

    this.servernameTeradata = servernameTeradata;

}



public void setCharsetTeradata(String charsetTeradata) {

    this.charsetTeradata = charsetTeradata;

}



public void setTmodeTeradata(String tmodeTeradata) {

    this.tmodeTeradata = tmodeTeradata;

}



public void setDsnameTeradata(String dsnameTeradata) {

    this.dsnameTeradata = dsnameTeradata;

}



public void setPortTeradata(String portTeradata) {

    this.portTeradata = portTeradata;

}



public void setTimeoutTeradata(String timeoutTeradata) {

    this.timeoutTeradata = timeoutTeradata;

}


在此之后,我将这个 bean 注入到我的控制器中,但是当我这样做时:


teraDataSource.getConnection();

以下是我正在使用的属性:


> application.servernameTeradata=server.com

> application.usernameTeradata=user 

> application.passwordTeradata=pass

> application.charsetTeradata=UTF8 

> application.tmodeTeradata=ANSI

> application.dsnameTeradata=TEST_DB 

> application.portTeradata=1025

> application.timeoutTeradata=180000

我能够使用 Class.forName("Driver Name") 通过普通 jdbc 连接到 teradata,但面临数据源问题。


提前致谢


侃侃无极
浏览 147回答 1
1回答

白猪掌柜的

经过一些研发和马克的帮助,我能够使配置工作。我正在发布解决方案,以便其他人可以从答案中受益。如果您有这样的 teradata 网址:jdbc:teradata://server_name/database=database_nane,tmode=ANSI,charset=UTF8数据源配置文件应如下所示:@Component@Configuration@ConfigurationProperties("application")public class TeradataConfiguration {    @NotNull    private String usernameTeradata;    @NotNull    private String passwordTeradata;    @NotNull    private String servernameTeradata;    @NotNull    private String charsetTeradata;    @NotNull    private String tmodeTeradata;    @NotNull    private String dsnameTeradata;    @NotNull    private String portTeradata;    public void setUsernameTeradata(String usernameTeradata) {        this.usernameTeradata = usernameTeradata;    }    public void setPasswordTeradata(String passwordTeradata) {        this.passwordTeradata = passwordTeradata;    }    public void setServernameTeradata(String servernameTeradata) {        this.servernameTeradata = servernameTeradata;    }    public void setCharsetTeradata(String charsetTeradata) {        this.charsetTeradata = charsetTeradata;    }    public void setTmodeTeradata(String tmodeTeradata) {        this.tmodeTeradata = tmodeTeradata;    }    public void setDsnameTeradata(String dsnameTeradata) {        this.dsnameTeradata = dsnameTeradata;    }    public void setPortTeradata(String portTeradata) {        this.portTeradata = portTeradata;    }    @Bean    DataSource teraDataSource() throws SQLException {        TeraDataSource teraDataSource = new TeraDataSource();        //This is username        teraDataSource.setuser(usernameTeradata);        //This is password        teraDataSource.setpassword(passwordTeradata);        //Charset which could be UTF-8 or something else        teraDataSource.setCharSet(charsetTeradata);        //Tmode which could be ANSII or something else        teraDataSource.setTMODE(tmodeTeradata);        //This is your server name        teraDataSource.setDSName(servernameTeradata);        //This is teradata port which by default is 1025        teraDataSource.setDbsPort(portTeradata);        //This is your data base name        teraDataSource.setDatabaseName(dsnameTeradata);        return teraDataSource;    }}在此之后,只需将此 bean 注入您的类中即可teraDataSource.getConnection()这将为您提供teradata连接。
随时随地看视频慕课网APP

相关分类

Java
我要回答