Я создал базовое приложение SpringBoot для создания таблицы в базе данных SQL.
@SpringBootApplication
public class UserServiceApplication implements CommandLineRunner {
@Autowired
JdbcTemplate jdbcTemplate;
public static void main(String[] args) {
SpringApplication.run(UserServiceApplication.class, args);
}
@Override
public void run(String... args) throws Exception {
String sql = "INSERT INTO micro_users (fullname, email, password) values (?, ? ,?)";
int result = jdbcTemplate.update(sql, "MyName", "[email protected]", "2021");
System.out.println("result " + result);
}
}
Это то, что у меня есть в моем application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/microservices
spring.datasource.username=root
spring.datasource.password=root
Это то, что я добавил в application.yml
server:
port: 8081
spring:
datasource:
url: jdbc:mysql://localhost:3306/microservices
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
application:
name: service
main:
allow-bean-definition-overriding: true
lazy-initialization: true
jpa:
hibernate:
ddl-auto:update
show-sql: true
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
Я не могу получить доступ к своей базе данных. Что я могу делать не так.
Я создал локальную базу данных со следующими данными подключения:
Name: Local instance
Host: localhost
Port: 3306
Login user: root
Current user: root@localhost
Version: 8.0.33
Ошибка, которую я получаю:
T10:37:09.815-05:00 INFO 12812 --- [ main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2023-07-05T10:37:10.102-05:00 INFO 12812 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8081 (http) with context path ''
2023-07-05T10:37:10.115-05:00 WARN 12812 --- [ main] JpaBaseConfiguration$JpaWebConfiguration : spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning
2023-07-05T10:37:10.130-05:00 INFO 12812 --- [ main] c.b.user.service.UserServiceApplication : Started UserServiceApplication in 3.897 seconds (process running for 4.33)
2023-07-05T10:37:10.182-05:00 INFO 12812 --- [ main] .s.b.a.l.ConditionEvaluationReportLogger :
Caused by: java.sql.SQLSyntaxErrorException: Table 'microservices.micro_users' doesn't exist
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1061) ~[mysql-connector-j-8.0.33.jar:8.0.33]
at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1009) ~[mysql-connector-j-8.0.33.jar:8.0.33]
@Twistleton обновил вопрос, указав подробности. Спасибо
Вам просто нужно добавить один пробел между ddl-auto:update. И попробуйте перезапустить свой код после изменения ddl-auto: create после успешного запуска, вам нужно установить снова ddl-auto: update.




Добавление пробела в ddl-auto: обновление сработало. Я также заметил, что текст команды ddl-auto изменился на желтый после изменения, как и другие, поэтому нужно что-то искать, когда мы пишем команды в файле yml.
Может в стартовом логе что-то есть?