【问题标题】:net.snowflake.client.jdbc.SnowflakeSQLException: SQL compilation error: Object 'my_table_name' does not exist or not authorizednet.snowflake.client.jdbc.SnowflakeSQLException:SQL 编译错误:对象 \'my_table_name\' 不存在或未授权
【发布时间】:2022-11-15 00:02:59
【问题描述】:

我有带有 Snowflake 驱动程序的 Spring Boot 应用程序,可以从 Snowflake 数据库中获取数据并显示在前端应用程序中。我正在使用 springframework 的 JdbcTemplate 在 RowMapper 的帮助下查询结果并将结果映射到 POJO。 如果我使用 3.6.8 或 3.7.2 的 snowflake-jdbc 驱动程序版本,这可以正常工作,但如果我将驱动程序版本更改为 3.8.x/3.9.x/3.10.x/3.12.x,则不适用于相同的代码库/3.13.24

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.tomcat</groupId>
                    <artifactId>tomcat-jdbc</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>net.snowflake</groupId>
            <artifactId>snowflake-jdbc</artifactId>
            <version>3.13.24</version>
        </dependency>
        
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

应用程序.properties

spring.datasource.driver-class-name=net.snowflake.client.jdbc.SnowflakeDriver
spring.datasource.url=jdbc:snowflake://<accountname>.snowflakecomputing.com:443/?CLIENT_SESSION_KEEP_ALIVE=true&user=xxx&password=xxx&warehouse=xxx&role=xxx&db=xxx&schema=xxx
spring.datasource.username=xxx
spring.datasource.password=xxx
spring.jpa.database=default
spring.jpa.properties.hibernate.dialect=com.example.demo.SnowflakeDialect

DAO:这里 pojo 类只包含一个带有 getter setter 的字段

//exception on below line
List<my_pojo_class> data=jdbcTemplate.query("select column1 FROM  my_table_name LIMIT 2",
            new RowMapper<my_pojo_class>(){  
                @Override  
                public my_pojo_class mapRow(ResultSet rs, int rownumber) throws SQLException {  
                my_pojo_class layer = new my_pojo_class();
                layer.setColumn1(rs.getString(1));
                return layer; 
            }  
            });

请指导我哪里出错了

【问题讨论】:

    标签: java spring-boot snowflake-cloud-data-platform


    【解决方案1】:

    正如错误所说,您可能无权访问 my_table_name 表或该表确实存在。

    1. 查看历史页面并找到失败的查询。验证角色名称、数据库名称和架构是否正确。

      https://docs.snowflake.com/en/user-guide/ui-history.html

      1. 尝试通过 UI 运行相同的查询。确保您使用相同的角色。

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-16
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多