hertzbeat
hertzbeat copied to clipboard
[BUG] Switch data source h2 to mysql during deployment, and start error
Is there an existing issue for this?
- [X] I have searched the existing issues
Current Behavior
当部署hertzbeat时,测试切换数据源为mysql时,按照官网创建数据库,启动后会报错
使用
create database hertzbeat default charset utf8mb4 collate utf8mb4_general_ci;
Expected Behavior
报错信息为
java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes
Steps To Reproduce
No response
Environment
HertzBeat version(1.5.0):
Debug logs
2024-05-30 17:27:22.052 [main] INFO org.springframework.boot.web.embedded.tomcat.TomcatWebServer Line:108 - Tomcat initialized with port(s): 1157 (http)
2024-05-30 17:27:22.062 [main] INFO org.apache.coyote.http11.Http11NioProtocol Line:173 - Initializing ProtocolHandler ["http-nio-1157"]
2024-05-30 17:27:22.062 [main] INFO org.apache.catalina.core.StandardService Line:173 - Starting service [Tomcat]
2024-05-30 17:27:22.063 [main] INFO org.apache.catalina.core.StandardEngine Line:173 - Starting Servlet engine: [Apache Tomcat/9.0.65]
2024-05-30 17:27:22.134 [main] INFO org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Line:173 - Initializing Spring embedded WebApplicationContext
2024-05-30 17:27:22.135 [main] INFO org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext Line:292 - Root WebApplicationContext: initialization completed in 2690 ms
2024-05-30 17:27:22.216 [main] INFO com.usthe.sureness.configuration.SurenessAutoConfiguration Line:170 - [sureness-starter] - SurenessSubjectFactory init success
2024-05-30 17:27:22.441 [main] INFO com.usthe.sureness.configuration.SurenessFilter Line:50 - servlet surenessFilter initialized
2024-05-30 17:27:22.517 [main] INFO org.hibernate.jpa.internal.util.LogHelper Line:31 - HHH000204: Processing PersistenceUnitInfo [name: default]
2024-05-30 17:27:22.570 [main] INFO org.hibernate.Version Line:44 - HHH000412: Hibernate ORM core version 5.6.11.Final
2024-05-30 17:27:22.734 [main] INFO org.hibernate.annotations.common.Version Line:56 - HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
2024-05-30 17:27:22.841 [main] INFO com.zaxxer.hikari.HikariDataSource Line:110 - HikariPool-1 - Starting...
2024-05-30 17:27:22.848 [main] INFO cc.blynk.clickhouse.ClickHouseDriver Line:36 - Driver registered
2024-05-30 17:27:23.184 [main] INFO com.zaxxer.hikari.HikariDataSource Line:123 - HikariPool-1 - Start completed.
2024-05-30 17:27:23.199 [main] INFO org.hibernate.dialect.Dialect Line:175 - HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect
2024-05-30 17:27:24.509 [main] WARN org.hibernate.tool.schema.internal.ExceptionHandlerLoggedImpl Line:27 - GenerationTarget encountered exception accepting command : Error executing DDL "create index index_collector_monitor o
n hzb_collector_monitor_bind (collector, monitor_id)" via JDBC Statement
org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL "create index index_collector_monitor on hzb_collector_monitor_bind (collector, monitor_id)" via JDBC Statement
at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:67)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlString(AbstractSchemaMigrator.java:581)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applySqlStrings(AbstractSchemaMigrator.java:526)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.applyIndexes(AbstractSchemaMigrator.java:348)
at org.hibernate.tool.schema.internal.GroupedSchemaMigratorImpl.performTablesMigration(GroupedSchemaMigratorImpl.java:88)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.performMigration(AbstractSchemaMigrator.java:220)
at org.hibernate.tool.schema.internal.AbstractSchemaMigrator.doMigration(AbstractSchemaMigrator.java:123)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:196)
at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.process(SchemaManagementToolCoordinator.java:85)
at org.hibernate.internal.SessionFactoryImpl.
Anything else?
解决很容易
使用新的建库语句
CREATE DATABASE hertzbeat DEFAULT CHARSET utf8 COLLATE utf8mb4_general_ci;
或者修改数据库字符集
ALTER DATABASE hertzbeat CHARACTER SET utf8 COLLATE utf8_general_ci;