I have checked all the Dependencies added SQL Driver as well and I am using MYSQL DB. After Running the application DB is not creating. I am using the Data Management tool in STS4.
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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>CitizenService</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>CitizenService</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>16</java.version>
<spring-cloud.version>2021.0.3</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>com.sun.jersey.contribs</groupId>
<artifactId>jersey-apache-client4</artifactId>
<version>1.19.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.2.3.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
> </dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
> application.yml file :
>server:
> port: 8081
> spring:
> datasource:
> url: jdbc:mysql://localhost:3306/CitizenDB
username: root
password: March@031996
> driver-class-name: com.mysql.cj.jdbc.Driver
spring: application: name: CITIZEN-SERVICE > jpa: show-sql: true database-platform: org.hibernate.dialect.MYSQLInnoDBDialect generate-ddl: true
hibernate: ddl-auto: update
ENTITY CLASS:
package com.example.demo.CitizenService.Entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Citizen {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
@Column
private String name;
@Column
private int vaccinationId;
}
`enter code here`package com.example.demo.CitizenService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class })
@EnableDiscoveryClient
public class CitizenServiceApplication {
public static void main(String[] args) {
SpringApplication.run(CitizenServiceApplication.class, args);
}
}
CodePudding user response:
You just add createDatabaseIfNotExist=true like this
spring
datasource
url=jdbc:mysql://localhost:3306/CitizenDB?createDatabaseIfNotExist=true
to your application.yml file
CodePudding user response:
First of all, please include well-formatted code in your question, which may be easily copy-pasted for to reproduce your issue.
Use separated code blocks for different files and types of files especially. Your application.yml
configuration is completely unreadable.
Remove any text lines like enter code here package com.example.demo.CitizenService;
or ENTITY CLASS:
. They make your code uncompilable. Use comments and javadocs instead. However, if you don't want to do that, you may add the flag
Use code formatting in your IDE. Example for IntelliJ IDEA.
Second, please clearly specify your issue and what exactly you have done to resolve it. I'm assuming you expect that your Spring Boot application should create the database CitizenDB
and the Citizen
table in it.
Spring (more specifically Hibernate) doesn't create a database by default and it's a bad practice. It assumes that you already have a created database and better to create it yourself. However, if you still want to create the database automatically you may specify such flag createDatabaseIfNotExist=true
in your data source URL. Example for your case:
spring:
datasource:
url: jdbc:mysql://localhost:3306/CitizenDB?createDatabaseIfNotExist=true
You have to improve excluding of the DataSourceAutoConfiguration
class since you want the Spring to configure everything for you. Your main class should look like this:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class CitizenServiceApplication {
public static void main(String[] args) {
SpringApplication.run(CitizenServiceApplication.class, args);
}
}