10
respostas

[Projeto] Erro na query e migration

As querys SQL não funcionam quando são disparadas no postman e da erro 500, porém funcionam normalmente no banco de dados depois da requisição ser disparada no postman lanca uma sqlExcepition na ide com o seguinte erro:

java.sql.SQLSyntaxErrorException Create breakpoint: Unknown column 'm1_0.telefone' in 'field list'

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 (Client PreparedStatement.java:916) ~[mysql-connector-j-8.0.33.jar:8.0.33] at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery (Client PreparedStatement.java:972) ~[mysql-connector-j-8.0.33.jar:8.0.33]

at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery (ProxyPreparedStatement.java:52) ~[HikariCP-5.0.1.jar:na]

at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery (HikariProxyPreparedStatement.java) ~[HikariCP-5.0.1.jar:na]

at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery (DeferredResultSetAccess.java:239) ~[hibernate-core-6.2.6.Final.jar:6

.2.6.Final]

at org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet (DeferredResultSetAccess.java:163) ~[hibernate-core-6.2.6.Final.jar:6

.2.6.Final]

at org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.advanceNext(JdbcValues ResultSetImpl.java:254) ~[hibernate-core-6.2.6.Final.jar:6.2

.6.Final]

at org.hibernate.sql.results.jdbc.internal.JobbvaluesResultSetImpl.processNext(JdbcValues ResultSetImpl.java:134) ~[hibernate-core-6.2.6.Final.jar:6.2

.6.Final] at org.hibernate.sql.results.jdbc.internal.AbstractJdbcValues.next(AbstractJdbcValues.java:19) ~[hibernate-core-6.2.6.Final.jar:6.2.6.Final]

at org.hibernate.sql.results.internal.RowProcessingStateStandardImpl.next (RowProcessingStateStandardImpl.java:66) ~[hibernate-core-6.2.6.Final.jar:6

.2.6.Final]

10 respostas

Oi!

Está dizendo no erro que não existe a coluna telefone na sua tabela de médicos: Unknown column 'm1_0.telefone' in 'field list'

Talvez na migration a coluna tenha sido criada com o nome diferente. Manda aqui o código da migration que cria a tabela de médicos e se possível rode esse comando no MySQL e mande o resultado:

desc medicos;

Bom dia,

Esse é o código da migration versão 1


create table medicos(
   id bigint not null auto_increment,
   nome varchar(100) not null,
   email varchar(100) not null unique,
   crm varchar(6) not null unique,
   especialidade varchar(100) not null,
   logradouro varchar(100) not null,
   bairro varchar(100) not null,
   cep varchar(9) not null,
   complemento varchar(100),
   numero varchar(20),
   uf char(2) not null,
   cidade varchar(100) not null,
   primary key(id)
);

Esse é depois de ter adicionado a coluna telefone alter table medicos add telefone varchar(20) not null;

Rodei o comando desc medicos no mysql workbench e realmente não aparece a nova coluna telefone.

Retorno do desc medicos:

id	bigint	NO	PRI		auto_increment
nome	varchar(100)	NO			
email	varchar(100)	NO	UNI		
crm	varchar(6)	NO	UNI		
especialidade	varchar(100)	NO			
logradouro	varchar(100)	NO			
bairro	varchar(100)	NO			
cep	varchar(9)	NO			
complemento	varchar(100)	YES			
numero	varchar(20)	YES			
uf	char(2)	NO			
cidade	varchar(100)	NO

Percebi que no console não aparece a atualizaçãode arquivo da migration é como se não estivesse versionando.

Essa é uma parte do código que aparece no console quando a aplicação roda

INFO 4008 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http) 2023-08-23T08:10:37.141-03:00 INFO 4008 --- [ restartedMain] o.apache.catalina.core.StandardService : Starting service [Tomcat] 2023-08-23T08:10:37.141-03:00 INFO 4008 --- [ restartedMain] o.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.11] 2023-08-23T08:10:37.247-03:00 INFO 4008 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-08-23T08:10:37.281-03:00 INFO 4008 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 3662 ms 2023-08-23T08:10:37.795-03:00 INFO 4008 --- [ restartedMain] o.f.c.internal.license.VersionPrinter : Flyway Community Edition 9.16.3 by Redgate 2023-08-23T08:10:37.795-03:00 INFO 4008 --- [ restartedMain] o.f.c.internal.license.VersionPrinter : See release notes here: https://rd.gt/416ObMi 2023-08-23T08:10:37.795-03:00 INFO 4008 --- [ restartedMain] o.f.c.internal.license.VersionPrinter : 2023-08-23T08:10:37.807-03:00 INFO 4008 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2023-08-23T08:10:38.536-03:00 INFO 4008 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@49ef98de 2023-08-23T08:10:38.539-03:00 INFO 4008 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2023-08-23T08:10:38.601-03:00 INFO 4008 --- [ restartedMain] o.f.c.i.database.base.BaseDatabaseType : Database: jdbc:mysql://localhost:3306/vollmed_api (MySQL 8.1) 2023-08-23T08:10:38.659-03:00 WARN 4008 --- [ restartedMain] o.f.c.internal.database.base.Database : Flyway upgrade recommended: MySQL 8.1 is newer than this version of Flyway and support has not been tested. The latest supported version of MySQL is 8.0. 2023-08-23T08:10:38.766-03:00 INFO 4008 --- [ restartedMain] o.f.core.internal.command.DbValidate : Successfully validated 1 migration (execution time 00:00.075s) 2023-08-23T08:10:38.848-03:00 INFO 4008 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Current version of schema vollmed_api: 1 2023-08-23T08:10:38.849-03:00 ERROR 4008 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Schema vollmed_api has version 1, but no migration could be resolved in the configured locations ! 2023-08-23T08:10:38.853-03:00 INFO 4008 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Schema vollmed_api is up to date. No migration necessary. 2023-08-23T08:10:39.299-03:00 INFO 4008 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2023-08-23T08:10:39.441-03:00 INFO 4008 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.2.6.Final 2023-08-23T08:10:39.446-03:00 INFO 4008 --- [ restartedMain] org.hibernate.cfg.Environment : HHH000406: Using bytecode reflection optimizer 2023-08-23T08:10:39.814-03:00 INFO 4008 --- [ restartedMain] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy 2023-08-23T08:10:40.078-03:00 INFO 4008 --- [ restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer 2023-08-23T08:10:40.658-03:00 INFO 4008 --- [ restartedMain] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy 2023-08-23T08:10:41.725-03:00 INFO 4008 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2023-08-23T08:10:41.728-03:00 INFO 4008 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default' 2023-08-23T08:10:42.543-03:00 WARN 4008 --- [ restartedMain] 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-08-23T08:10:43.245-03:00 INFO 4008 --- [ restartedMain] o.s.b.d.a.OptionalLiveReloadServer : LiveReload server is running on port 35729 2023-08-23T08:10:43.323-03:00 INFO 4008 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2023-08-23T08:10:43.339-03:00 INFO 4008 --- [ restartedMain] med.voll.api.ApiApplication : Started ApiApplication in 10.774 seconds (process running for 12.083)

Pelo log apareceu isso:

Current version of schema vollmed_api: 1 

2023-08-23T08:10:38.849-03:00 ERROR 4008 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Schema vollmed_api has version 1, but no migration could be resolved in the configured locations ! 

2023-08-23T08:10:38.853-03:00 INFO 4008 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Schema vollmed_api is up to date. No migration necessary.

Ele não rodou a migration V2 então. Manda aqui um print da sua estrutura de projetos no IntelliJ

Segue o print da estrutura de projeto

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Parece que a migration V1 está com um espaço em branco no nome do arquivo, antes da letra V. Talvez isso esteja impactando.

Confere isso e talvez você precise rodar novamente as migrations. Veja aqui: https://cursos.alura.com.br/course/spring-boot-3-desenvolva-api-rest-java/task/121056

Bom dia, realmente o arquivo V1 estava com espaço em branco, eu deletei a base de dados criei novamente refiz a arquivo migration e tevi esse retorno no console:

2023-08-26T03:29:40.452-03:00 INFO 8516 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2023-08-26T03:29:40.511-03:00 INFO 8516 --- [ restartedMain] o.f.c.i.database.base.BaseDatabaseType : Database: jdbc:mysql://localhost:3306/vollmed_api (MySQL 8.1) 2023-08-26T03:29:40.555-03:00 WARN 8516 --- [ restartedMain] o.f.c.internal.database.base.Database : Flyway upgrade recommended: MySQL 8.1 is newer than this version of Flyway and support has not been tested. The latest supported version of MySQL is 8.0. 2023-08-26T03:29:40.620-03:00 INFO 8516 --- [ restartedMain] o.f.core.internal.command.DbValidate : Successfully validated 0 migrations (execution time 00:00.041s) 2023-08-26T03:29:40.621-03:00 WARN 8516 --- [ restartedMain] o.f.core.internal.command.DbValidate : No migrations found. Are your locations set up correctly? 2023-08-26T03:29:40.696-03:00 INFO 8516 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Current version of schema vollmed_api: << Empty Schema >> 2023-08-26T03:29:40.701-03:00 INFO 8516 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Schema vollmed_api is up to date. No migration necessary. 2023-08-26T03:29:41.084-03:00 INFO 8516 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo

Deu isso: No migrations found. Are your locations set up correctly?

Provavelmente as migrations estão na pasta incorreta. Verifica se estão na pasta src/main/resources/db/migration

Obs: é comum cometer o erro de criar a pasta chamada db.migration ao invés de criar a pasta db e dentro dela a pasta migration.

Ele não rodou v1, conferir o no mysql workbench vi que não executou os comandos pois ele não criou a tabela. No console ele fala algo sobre o flyway

2023-08-28T07:34:07.622-03:00 INFO 13248 --- [ restartedMain] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext 2023-08-28T07:34:07.633-03:00 INFO 13248 --- [ restartedMain] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 5058 ms 2023-08-28T07:34:08.208-03:00 INFO 13248 --- [ restartedMain] o.f.c.internal.license.VersionPrinter : Flyway Community Edition 9.16.3 by Redgate 2023-08-28T07:34:08.208-03:00 INFO 13248 --- [ restartedMain] o.f.c.internal.license.VersionPrinter : See release notes here: https://rd.gt/416ObMi 2023-08-28T07:34:08.208-03:00 INFO 13248 --- [ restartedMain] o.f.c.internal.license.VersionPrinter : 2023-08-28T07:34:08.231-03:00 INFO 13248 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2023-08-28T07:34:08.986-03:00 INFO 13248 --- [ restartedMain] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection com.mysql.cj.jdbc.ConnectionImpl@558b600f 2023-08-28T07:34:08.989-03:00 INFO 13248 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. 2023-08-28T07:34:09.059-03:00 INFO 13248 --- [ restartedMain] o.f.c.i.database.base.BaseDatabaseType : Database: jdbc:mysql://localhost:3306/vollmed_api (MySQL 8.1) 2023-08-28T07:34:09.114-03:00 WARN 13248 --- [ restartedMain] o.f.c.internal.database.base.Database : Flyway upgrade recommended: MySQL 8.1 is newer than this version of Flyway and support has not been tested. The latest supported version of MySQL is 8.0. 2023-08-28T07:34:09.178-03:00 INFO 13248 --- [ restartedMain] o.f.core.internal.command.DbValidate : Successfully validated 0 migrations (execution time 00:00.041s) 2023-08-28T07:34:09.178-03:00 WARN 13248 --- [ restartedMain] o.f.core.internal.command.DbValidate : No migrations found. Are your locations set up correctly? 2023-08-28T07:34:09.312-03:00 INFO 13248 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Current version of schema vollmed_api: << Empty Schema >> 2023-08-28T07:34:09.317-03:00 INFO 13248 --- [ restartedMain] o.f.core.internal.command.DbMigrate : Schema vollmed_api is up to date. No migration necessary. 2023-08-28T07:34:09.627-03:00 INFO 13248 --- [ restartedMain] o.hibernate.jpa.internal.util.LogHelper : HHH000204: Processing PersistenceUnitInfo [name: default] 2023-08-28T07:34:09.779-03:00 INFO 13248 --- [ restartedMain] org.hibernate.Version : HHH000412: Hibernate ORM core version 6.2.6.Final 2023-08-28T07:34:09.782-03:00 INFO 13248 --- [ restartedMain] org.hibernate.cfg.Environment : HHH000406: Using bytecode reflection optimizer 2023-08-28T07:34:10.039-03:00 INFO 13248 --- [ restartedMain] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy 2023-08-28T07:34:10.380-03:00 INFO 13248 --- [ restartedMain] o.s.o.j.p.SpringPersistenceUnitInfo : No LoadTimeWeaver setup: ignoring JPA class transformer 2023-08-28T07:34:10.851-03:00 INFO 13248 --- [ restartedMain] o.h.b.i.BytecodeProviderInitiator : HHH000021: Bytecode provider name : bytebuddy 2023-08-28T07:34:11.923-03:00 INFO 13248 --- [ restartedMain] o.h.e.t.j.p.i.JtaPlatformInitiator : HHH000490: Using JtaPlatform implementation: [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform] 2023-08-28T07:34:11.928-03:00 INFO 13248 --- [ restartedMain] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'

A estrutura está dessa forma:

![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade )

Deve ser o problema que comentei na mensagem anterior, da pasta das migrations. Renomeia a pasta para db e dentro dela crie uma nova chamada migration e na sequeência move os arquivos .sql para lá.