2017-12-02 1 views
0

Ich versuche, einen Eintrag in meiner MySQL-Datenbank mit einer ziemlich einfachen (bisher) Spring Boot App hinzuzufügen. Ich habe ein paar Bits und Stücke, die ich gefunden habe online genutzt und dies ist der Code, den ich versuche zu folgen:Spring Boot, JPA-Fehler: "Fehler beim Ausführen von DDL über JDBC-Anweisung"

netgloo/spring-boot-samples/spring-boot-mysql-springdatajpa-hibernate

Derzeit erhalte ich die folgenden Probleme, wenn ich meine app laufen.

Wenn ich laufen zuerst die App die folgende Ausnahme ausgelöst:

org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL via JDBC Statement 

Und wenn ich eine POST-Anforderung an die Steuerung, die einen neuen Eintrag in der Datenbank erstellen soll ich die folgende Ausnahme erhalten:

org.springframework.orm.jpa.JpaSystemException: could not execute statement; nested exception is org.hibernate.exception.GenericJDBCException: could not execute statement 

wiederum die durch die folgende verursacht:

Caused by: java.sql.SQLException: No database selected 

application.properties:

# Web pages extension 
spring.mvc.view.suffix =.html 

# ============================== 
# --- DATA SOURCE 
# ============================== 

# Database url 
spring.datasource.url = jdbc:mysql://localhost:3306?useSSL=false 

# Database credentials 
spring.datasource.username = root 
spring.datasource.password = root 

# Keep database connection alive 
spring.datasource.tomcat.test-while-idle = true 
spring.datasource.tomcat.validation-query = SELECT 1 

# ============================== 
# --- JPA/Hibernate 
# ============================== 

# Hibernate ddl auto (create, create-drop, update): with "update" the database 
# schema will be automatically updated accordingly to java entities found in 
# the project 
spring.jpa.hibernate.ddl-auto = update 

# Naming strategy 
spring.jpa.hibernate.naming.strategy = org.hibernate.cfg.ImprovedNamingStrategy 

# Allows Hibernate to generate SQL optimized for a particular DBMS 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 

pom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" 
    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>my.group</groupId> 
<artifactId>myapp</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>myapp</name> 
<description>Demo project for Spring Boot</description> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.8.RELEASE</version> 
</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-web</artifactId> 
    </dependency> 

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

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>5.2.12.Final</version> 
    </dependency> 


    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <scope>runtime</scope> 
    </dependency> 

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

    <dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20171018</version> 
    </dependency> 



</dependencies> 

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

Ich habe diese einfache Schnittstelle:

@Transactional 
public interface UserDAO extends CrudRepository<User, Long> 
{ 
    public User findByEmail(String email); 
} 

Und hier ist mein Controller:

@Controller 
public class UserController 
{ 
    @Autowired 
    private UserDAO userDAO; 

    @RequestMapping(value = "/register", method = RequestMethod.GET) 
    public String getRegisterView() 
    { 
     return "register/registerView"; 
    } 

    @RequestMapping(value = "/register", method = RequestMethod.POST) 
    public @ResponseBody 
    ControllerResponse registerRequest(@RequestBody String request) 
    { 
     User user = null; 
     JSONObject json = new JSONObject(request); 

     try 
     { 
      user = new User(); 

      user.setEmail(json.getString("email")); 
      user.setName(json.getString("name")); 
      user.setSurname(json.getString("surname")); 
      user.setPassword(json.getString("password")); 

      userDAO.save(user); 
     } 
     catch (Exception e) 
     { 
      e.printStackTrace(); 
     } 

     ControllerResponse response = new ControllerResponse(); 
     response.setMessage("Controller returned this"); 
     response.setSuccess(true); 
     return response; 
    } 
} 
wie folgt definiert

ist Meine Benutzerklasse:

public class User 
{ 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 

    @NotNull 
    private String email; 

    @NotNull 
    private String password; 

    @NotNull 
    private String name; 

    @NotNull 
    private String surname; 

    @Column(name = "authorization_token") 
    private String authorizationToken; 

    // bunch of getters/setters 
} 

Antwort

0

Ihre URL-Datenquelle in application.properties Datenbank Name fehlt. Sollte so sein.

spring.datasource.url = jdbc:mysql://localhost:3306/dbname?useSSL=false 
Verwandte Themen