web-dev-qa-db-ja.com

データベースが見つからず、IFEXISTS = trueであるため、自動作成できません

H2データベースコンソールを開いた後にエラーが発生します。データベース名を入力しましたが、データベースが見つかりませんというエラーが表示されます:

データベース「C:/ Users/Barlekar/onlineshoppings」が見つからず、IFEXISTS = trueであるため、自動作成できない[90146-199] 90146/90146(ヘルプ)

org.h2.jdbc.JdbcSQLNonTransientConnectionException:データベース「C:/ Users/Barlekar/onlineshoppings」が見つかりません。IFEXISTS= trueなので、自動作成できません[90146-199]

15
sonal barlekar

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>

<groupId>com.in28minutes.database</groupId>
<artifactId>database-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>database-demo</name>
<description>Demo project for Spring Boot</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.0.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <Java.version>1.8</Java.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>

</dependencies>

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

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

<pluginRepositories>
    <pluginRepository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </pluginRepository>
    <pluginRepository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
0
Mdhar9e

H2 dbの起動時に「-ifNotExists」起動オプションにパラメーターを追加できることがわかりました。プログラム的には、次のように行うことができます。

Server.createTcpServer( "-tcpPort"、 "[PORT]"、 "-tcpAllowOthers"、 "-ifNotExists")。start();

コマンドプロンプトを使用している場合も同様です。

0
mainas

これをapplication.propertiesファイルに追加するだけです。

spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
0
Fahad Israr

私はこの問題に直面し、次の方法で解決しました

  • H2データベースを使用するには、アプリケーションをJRE環境ではなくJDK環境で実行する必要があります。変更するには、以下の手順を使用してください。

    1. プロジェクトを右クリック>プロパティ
    2. 左側の「Javaビルドパス」を選択し、「JREシステムライブラリ」を選択して、「編集」をクリックします。
    3. 「Workspace Default JRE」を選択します
    4. 「インストールされているJRE」をクリックします
    5. リストに必要なJREが表示されたら、それを選択します(JDKの選択も可能です)。
    6. そうでない場合は、[検索]をクリックし、[コンピュータ]> [Windows C:]> [プログラムファイル]> [Java]に移動して、[OK]をクリックします。
    7. インストールされているすべてのJREが表示されるので、必要なJREを選択します
    8. [OK/100万回終了]をクリックします。私は Georgie ここで提供されている手順を使用しました-> https://stackoverflow.com/a/29640138


  • H2ログインコンソールでは、Spring Bootによって表示されるデフォルトのURLはjdbc:h2:~/test、これは実際にはスプリングブートアプリケーションのプロパティと一致する必要がありますspring.datasource.url=jdbc:h2:mem:testdbログインコンソールのURLを置き換えて、[Ivan Xue]を使用した接続をクリックします[2]ここに提供されている手順-> https://stackoverflow.com/a/56539107

  • Mvn cleanコマンドを使用してターゲットをクリアし、maven force update snapshotまたはmvn installを使用しない場合はプロジェクトのビルドを許可してから、Spring Bootアプリを再度起動して違いを確認してください

バージョンを下げると、H2 DBは機能しますが、テーブルが表示されません。コードスニペット

コントローラ

@RestController
public class CurrencyExchangeController {

    @Autowired
    private Environment env;
    @GetMapping("/currency-exchange/from/{from}/to/{to}")
    public CurrencyExchange retriveCurrencyExchange(@PathVariable String from,@PathVariable String to)
    {
        CurrencyExchange currencyExchange = new CurrencyExchange(1000L, from, to, BigDecimal.valueOf(65));
        currencyExchange.setPort(Integer.parseInt(env.getProperty("local.server.port")));
        return currencyExchange;

    }

[〜#〜] pojo [〜#〜]

@Entity
public class CurrencyExchange {
    @Id
    private Long id;
    @Column(name ="currency_from")
    private String from;
    @Column(name ="currency_to")
    private String to;
    @Column(name ="conversion_multiple")
    private BigDecimal conversion;
    private int port;

スプリングブートメイン

@SpringBootApplication
@ComponentScan(basePackages = {"com.example"})
public class CurrencyExchangeServiceApplication {

    public static void main(String[] args) throws SQLException {
        SpringApplication.run(CurrencyExchangeServiceApplication.class, args);

    }

app.prop

spring.application.name=currency-exchange-service
server.port=8000

spring.jpa.show-sql=true
spring.h2.console.enabled=true

data.sql file
insert into currency_exchange(id,currency_from,currency_to,conversion_multiple,port)
values(1001,'USD','INR',65,0);
insert into currency_exchange(id,currency_from,currency_to,conversion_multiple,port)
values(1002,'EUR','INR',75,0);
0
Abdul Wajeed

H2ウェブサイトの公式ドキュメントによると: http://www.h2database.com/html/quickstart.html

それは言う、

データベースURL jdbc:h2:~/testは、ユーザーのホームディレクトリでデータベーステストを開きます。

新しいデータベースが自動的に作成されます


URL jdbc:h2:~/testを使用すると、データベースが作成されます。ここに設定があり、それを使用しようとします:

enter image description here

この構成は私にとってはうまくいき、私は同じエラーを抱えていましたが、現在は修正されています。データベースの名前をtestにしたくない場合は、必要なデータベースの名前に変更できます。あなたの場合、あなたが望む名前は:onlineshoppings私が間違っていなければ。その場合、使用するURLはjdbc:h2:~/onlineshoppingsになります。


小さな警告

新しいURLを使用する場合は、接続をテストするのではなく、最初にデータベースに接続してください。そうすれば、データベースが作成されます。それ以外の場合は、存在しないデータベースの接続をテストしています。

お役に立てば幸いです。


EDIT:他のモードでH2を使用する場合は、 https://h2database.com/html/features.html)に移動します 必要なモードを見つけ、関連付けられたURLを使用して有効にします。

要約すると、jdbc:h2:~/DatabaseNameはデータベースを作成しますが、jdbc:h2:tcp://localhost/~/databaseNameなどの他のモードは作成しません。データベースを作成する場合は必ずjdbc:h2:~/DatabaseNameを使用し、必要に応じて同じデータベースの他のURLを使用して別のモードでデータベースを使用してください。

0
Compiler v2

H2コンソールで使用されるjdbc Urlをチェックして、指定したものと一致するかどうかを確認します

0
Rohit Kumar

最初のURLをjdbc:h2:mem:testdbに変更し、2番目にSpring Bootのバージョンを2.1.3に変更して機能します

問題:

データベースが見つからないか、c:/ user/username/testにテストフォルダーがありません

Application.propertiesファイルにコピーして貼り付けます。

spring.datasource.url=jdbc:h2:~/test
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

問題はURLでした。確認してください。問題が解決しました。

0

私は最近この問題に直面しました、2つの問題がありました。

  1. デフォルトでは、jdbc:h2:〜/ testではなく、メモリ内データベースが入力されていませんでした。
  2. データソースで設定したデータベース名はtestではありませんでした。

jDBCのurlをjdbc:h2:mem:{db-name-in-config}に変更すると、魅力的に機能しました。

0

@Prateik Upadhyayの答えに加えて、db接続名を別の名前に変更したい場合は、私のために機能した唯一のものは以下です。 Spring Boot 2.2.4バージョンを使用しています。 h2 1.4.200バージョン。

spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.url=jdbc:h2:~/MyComponentDB;DB_CLOSE_ON_EXIT=FALSE;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1;MODE=Oracle
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
0
kkk
Along with h2 dependency in POM :
<dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
    </dependency>

以下のように、POMにjpaとcrudリポジトリの依存関係を追加しました。

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
0
Pankaj