Sqlite目录和架构设置(适用于MyBatis生成器)

时间:2012-10-23 22:59:30

标签: sqlite schema mybatis

我一直在尝试在Sqlite数据库上使用MyBatis生成器,但似乎无法找到用于XML属性目录和架构的设置。

生成器错误“生成警告:带有目录main的表配置,架构sqlite_master和表testTable未解析为任何表”

我在this以外的sqlite网站找不到多少内容catalog = main, schema = sqlite or sqlite_master

我的生成器XML文件是

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration >
  <context id="context">
    <jdbcConnection driverClass="org.sqlite.JDBC" connectionURL="jdbc:sqlite:testDB.sqlite" userId="" password="" ></jdbcConnection>
    <javaModelGenerator targetPackage="model" targetProject="test/src" ></javaModelGenerator>
    <sqlMapGenerator targetPackage="model" targetProject="test/src" ></sqlMapGenerator>
    <javaClientGenerator targetPackage="model" targetProject="test" type="XMLMAPPER" ></javaClientGenerator>
    <table catalog="main" schema="sqlite_master" tableName="testTable" >
      <property name="useActualColumnNames" value="true"/> 
    </table>
  </context>
</generatorConfiguration>

我也尝试了其他组合,比如

<table catalog="main" schema="sqlite" tableName="testTable" >

<table schema="sqlite" tableName="testTable" >

<table schema="sqlite_master" tableName="testTable" >

<table schema="main.testTable" tableName="testTable" >

此处的任何人都知道正确的设置吗?

编辑:

我已经省略了目录和模式,但仍然发生了生成警告:表配置目录为null,模式为null,表testTable没有解析为任何表“

这个错误让我觉得MyBatis由于架构不正确而无法找到该表,但它可能是其他东西。

3 个答案:

答案 0 :(得分:1)

错误消息非常具有误导性,当发现生成器无法看到db文件时我就知道了,所以请检查配置文件中connectionURL条目中的文件路径。

答案 1 :(得分:0)

出于实际目的,SQLite没有目录或模式;省略它们。

答案 2 :(得分:0)

我在使用docker时遇到此错误。问题是尽管我创建了一个表,但实际上我不会保存它。例如:

Docker for Postgres

docker run -d -p 5432:5432 --name my-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres
docker exec -it my-postgres bash
psql -U postgres


CREATE DATABASE cardcontrol;
CREATE TABLE card(id VARCHAR(32) PRIMARY KEY,external_id integer,pan VARCHAR (50) UNIQUE NOT NULL,card_holder VARCHAR (50),expiration_date TIMESTAMP);

// check creation
\dt

但是用这种方式来装桌子我有问题。 例如,当我使用DBeaver创建表(具有与以前相同的连接)时,问题就解决了。