spring启动应用程序-tomcat无法访问sqlite数据库文件

s4chpxco  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(563)

我已经搜索这个解决方案好几天了,但我想不出一个解决方案。
我有一个JavaSpring启动应用程序,应该与数据库交互,为了便于使用和存储,我选择了一个sqlite数据库文件。我的应用程序托管在windows服务器2019上的tomcat 8.5上。
启动时,我的应用程序应该读取sqlite数据库,但我得到了错误: [SQLITE_ERROR] SQL error or missing database (no such table: users_moved_group) 错误显示应用程序找不到数据库,但它确实存在,我对路径进行了一千次的双重检查(我还尝试了绝对路径和相对路径),如下所示:

spring.datasource.url = jdbc:sqlite:C:/Tomcat 8.5/db/workday.sqlite


如你所见,一切都正常。因此,我猜测tomcat服务无法读取该文件,但它位于tomcat文件夹中,特别是为了避免此类错误(在windows服务器和tomcat的干净安装中,它可以正常工作)。
这个问题只发生在三个虚拟机中的一个,不是我的,但我仍然拥有几乎所有的管理员权限。
我在这里完全迷路了,我所做的任何事情都不会让tomcat看到该文件,从而允许我的应用程序读取它。
下面是读取数据库的示例代码:
公共void cleartable(){

Connection connection;
String usersMovedGroupTable = "users_moved_group";
String sqlExpression = "SELECT * FROM " + usersMovedGroupTable;

List<UsersMovedGroup> usersMovedGroupList = new ArrayList<>();

try {
    connection = DriverManager.getConnection(applicationProperties.getDatasourceUrl());
    Statement statement = connection.createStatement();

    ResultSet rs = statement.executeQuery(sqlExpression);
    while(rs.next())
    {
        UsersMovedGroup user = new UsersMovedGroup(rs.getString("ump_date"), rs.getString("ump_user_id"), rs.getString("ump_user_login"), rs.getString("ump_group_id"), rs.getString("ump_group_name"));
        usersMovedGroupList.add(user);
    }
} catch (SQLException e) {
    logger.error("Error connecting to SQLite database : " + e.getMessage());
}

起初我用的是 jdbcTemplate 发出sql请求,但我将其更改为 Statement 等等,但结果是一样的。
如果需要,这里是我的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 http://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.4.4</version>
    <relativePath/>
  </parent>

  <groupId>com.sqlite</groupId>
  <artifactId>user-moved-ad-group-event-hook</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>user-moved-ad-group-event-hook</name>
  <description>Detect user changed of AD group</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-test</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-lang3</artifactId>
      <version>3.5</version>
    </dependency>

    <!-- SQLite -->
    <dependency>
      <groupId>org.xerial</groupId>
      <artifactId>sqlite-jdbc</artifactId>
      <version>3.34.0</version>
    </dependency>

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
      <version>RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring5</artifactId>
    </dependency>
  </dependencies>

  <build>
    <finalName>${project.artifactId}</finalName>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.4.4</version>
      </plugin>
    </plugins>
  </build>

  <profiles>
    <profile>
      <id>dev</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <activatedProperties>dev</activatedProperties>
      </properties>
    </profile>
    <profile>
      <id>lyvoc</id>
      <properties>
        <activatedProperties>lyvoc</activatedProperties>
      </properties>
    </profile>
    <profile>
      <id>prod</id>
      <properties>
        <activatedProperties>prod</activatedProperties>
      </properties>
    </profile>
  </profiles>

</project>
5gfr0r5j

5gfr0r5j1#

您是否尝试过usersmovedgrouptable=“schema\u name.database\u name”;

相关问题