Je reçois une erreur après l'ouverture de la console de base de données H2. J'entre le nom de la base de données mais il montre une erreur de base de données introuvable:
Base de données "C:/Users/Barlekar/onlineshoppings" introuvable et IFEXISTS = true, nous ne pouvons donc pas la créer automatiquement [90146-199] 90146/90146 (Aide)
org.h2.jdbc.JdbcSQLNonTransientConnectionException: base de données "C:/Users/Barlekar/onlineshoppings" introuvable et IFEXISTS = true, nous ne pouvons donc pas la créer automatiquement [90146-199]
utilisez les propriétés ci-dessous dans le pom.xml
et réexécutez l'application.
<?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>
J'ai trouvé que vous pouvez ajouter un paramètre aux options de démarrage "-ifNotExists" lors du démarrage de h2 db. Par programme, vous pouvez le faire de cette façon:
Server.createTcpServer ("- tcpPort", "[PORT]", "-tcpAllowOthers", "-ifNotExists"). Start ();
Si vous utilisez l'invite de commande, la même chose s'applique
Ajoutez-le simplement au fichier 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
J'ai rencontré ce problème et résolu de la manière suivante
Pour utiliser la base de données H2 - Votre application doit être exécutée dans l'environnement JDK, pas dans l'environnement JRE, pour modifier, veuillez suivre les étapes ci-dessous:
jdbc:h2:~/test
, il doit correspondre aux propriétés de l'application Spring Boot spring.datasource.url=jdbc:h2:mem:testdb
donc remplacez l'url dans la console de connexion et cliquez sur se connecter J'ai utilisé [Ivan Xue] [2] a fourni les étapes ici -> https://stackoverflow.com/a/56539107En dégradant la version, la H2 DB fonctionne mais la table que je ne peux pas voir. Extrait de code
Contrôleur
@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;
Spring boot main
@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);
Selon la documentation officielle sur le site H2: http://www.h2database.com/html/quickstart.html
Ça dit,
L'URL de la base de données
jdbc:h2:~/test
ouvre le test de la base de données dans votre répertoire personnelUne nouvelle base de données est automatiquement créée
Si vous utilisez l'URL: jdbc:h2:~/test
, il créera une base de données pour vous. J'ai la config ici et j'essaye de l'utiliser:
Cette configuration a fonctionné pour moi et j'ai eu la même erreur, et elle est corrigée maintenant. Si vous ne voulez pas que la base de données soit appelée test
, vous pouvez la renommer en la base de données souhaitée. Dans votre cas, le nom que vous voulez est: onlineshoppings
si je ne me trompe pas. L'URL à utiliser serait alors jdbc:h2:~/onlineshoppings
.
Une petite mise en garde
Assurez-vous que lorsque vous utilisez la nouvelle URL, vous vous connectez d'abord à la base de données au lieu de tester la connexion. De cette façon, il créera la base de données pour vous. Sinon, vous testez la connexion pour une base de données inexistante.
J'espère que ça aide et bonne chance!
EDIT: Si vous souhaitez utiliser H2 dans d'autres modes, accédez à https://h2database.com/html/features.html et trouvez le mode que vous voulez et utilisez l'URL associée pour l'activer.
En résumé, jdbc:h2:~/DatabaseName
crée la base de données pour vous tandis que d'autres modes comme jdbc:h2:tcp://localhost/~/databaseName
ne pas. Assurez-vous d'utiliser jdbc:h2:~/DatabaseName
chaque fois que vous souhaitez créer une base de données, puis si vous le souhaitez, utilisez d'autres URL pour la même base de données pour l'utiliser dans un mode différent.
Vérifiez l'url jdbc utilisée dans la console h2 pour voir si elle correspond à ce que vous avez spécifié
première URL vers jdbc: h2: mem: testdb deuxième a changé la version de Spring Boot en 2.1.3 et cela fonctionne
Problème:
Base de données introuvable ou dossier de test pas dans c:/user/username/test
Copiez-collez-le dans le fichier 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
Le problème était lié à l'URL, vérifiez-le. Problème résolu.
J'ai fait face à ce problème récemment, il y avait deux problèmes.
test
.lorsque j'ai changé l'URL JDBC en jdbc:h2:mem:{db-name-in-config}
, Ça a marché comme sur des roulettes.
Ajout à la réponse de @Prateik Upadhyay, si vous voulez renommer votre nom de connexion db en quelque chose d'autre, la seule chose qui a fonctionné pour moi est ci-dessous. J'utilise la version Spring Boot 2.2.4. avec la version 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>
J'ai ajouté jpa, la dépendance du référentiel crud dans POM comme indiqué ci-dessous et cela a bien fonctionné pour moi:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>