H2データベースコンソールを開いた後にエラーが発生します。データベース名を入力しましたが、データベースが見つかりませんというエラーが表示されます:
データベース「C:/ Users/Barlekar/onlineshoppings」が見つからず、IFEXISTS = trueであるため、自動作成できない[90146-199] 90146/90146(ヘルプ)
org.h2.jdbc.JdbcSQLNonTransientConnectionException:データベース「C:/ Users/Barlekar/onlineshoppings」が見つかりません。IFEXISTS= trueなので、自動作成できません[90146-199]
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>
H2 dbの起動時に「-ifNotExists」起動オプションにパラメーターを追加できることがわかりました。プログラム的には、次のように行うことができます。
Server.createTcpServer( "-tcpPort"、 "[PORT]"、 "-tcpAllowOthers"、 "-ifNotExists")。start();
コマンドプロンプトを使用している場合も同様です。
これを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
私はこの問題に直面し、次の方法で解決しました
H2データベースを使用するには、アプリケーションをJRE環境ではなくJDK環境で実行する必要があります。変更するには、以下の手順を使用してください。
jdbc:h2:~/test
、これは実際にはスプリングブートアプリケーションのプロパティと一致する必要がありますspring.datasource.url=jdbc:h2:mem:testdb
ログインコンソールのURLを置き換えて、[Ivan Xue]を使用した接続をクリックします[2]ここに提供されている手順-> https://stackoverflow.com/a/56539107バージョンを下げると、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);
H2ウェブサイトの公式ドキュメントによると: http://www.h2database.com/html/quickstart.html
それは言う、
データベースURL
jdbc:h2:~/test
は、ユーザーのホームディレクトリでデータベーステストを開きます。新しいデータベースが自動的に作成されます
URL jdbc:h2:~/test
を使用すると、データベースが作成されます。ここに設定があり、それを使用しようとします:
この構成は私にとってはうまくいき、私は同じエラーを抱えていましたが、現在は修正されています。データベースの名前を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を使用して別のモードでデータベースを使用してください。
H2コンソールで使用されるjdbc Urlをチェックして、指定したものと一致するかどうかを確認します
最初の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でした。確認してください。問題が解決しました。
私は最近この問題に直面しました、2つの問題がありました。
test
ではありませんでした。jDBCのurlをjdbc:h2:mem:{db-name-in-config}
に変更すると、魅力的に機能しました。
@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
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>