我一直在尝试在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由于架构不正确而无法找到该表,但它可能是其他东西。
答案 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创建表(具有与以前相同的连接)时,问题就解决了。