2

SqliteデータベースでMyBatisジェネレーターを使用しようとしましたが、XML属性カタログとスキーマに使用する設定が見つからないようです。

「生成警告が発生しました:カタログmain、スキーマsqlite_master、およびテーブルtestTableを使用したテーブル構成がどのテーブルにも解決されませんでした」というジェネレーターエラー

私はこれ以外の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はスキーマが正しくないためにテーブルを見つけることができないと思いますが、それは別の可能性があります。

4

3 に答える 3

1

エラー メッセージは非常に誤解を招くものです。ジェネレーターが db ファイルを認識できないことが判明したときに表示されたので、構成ファイルのconnectionURLエントリのファイル パスを確認してください。

于 2014-01-24T10:09:22.663 に答える
0

実際には、SQLite にはカタログやスキーマがありません。それらを省略します。

于 2012-10-24T08:25:06.330 に答える
0

ドッカーを使用してこのエラーが発生しました。問題は、テーブルを作成したと思っていたのに、実際には保存しなかったことです。例えば:

Postgre 用の Docker

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を使用して(以前に使用したのと同じ接続で)テーブルを作成すると、問題は解決しました。

于 2020-07-07T08:27:59.873 に答える