apache / hertzbeat

Apache HertzBeat(incubating) is a real-time monitoring system with agentless, performance cluster, prometheus-compatible, custom monitoring and status page building capabilities.
https://hertzbeat.apache.org/
Apache License 2.0
5.24k stars 910 forks source link

[BUG] Switch data source h2 to mysql during deployment, and start error #2051

Open milton4code opened 1 month ago

milton4code commented 1 month ago

Is there an existing issue for this?

Current Behavior

当部署hertzbeat时,测试切换数据源为mysql时,按照官网创建数据库,启动后会报错 使用 create database hertzbeat default charset utf8mb4 collate utf8mb4_general_ci;

image

Expected Behavior

报错信息为 java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes image

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.(SessionFactoryImpl.java:335) at org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:471) at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1498) at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:58) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1154) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:908) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408) at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) at org.dromara.hertzbeat.manager.Manager.main(Manager.java:40) Caused by: java.sql.SQLSyntaxErrorException: Specified key was too long; max key length is 767 bytes at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.StatementImpl.executeInternal(StatementImpl.java:763) at com.mysql.cj.jdbc.StatementImpl.execute(StatementImpl.java:648) at com.zaxxer.hikari.pool.ProxyStatement.execute(ProxyStatement.java:94) at com.zaxxer.hikari.pool.HikariProxyStatement.execute(HikariProxyStatement.java) at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:54) ... 34 common frames omitted

Anything else?

解决很容易 使用新的建库语句 CREATE DATABASE hertzbeat DEFAULT CHARSET utf8 COLLATE utf8mb4_general_ci; 或者修改数据库字符集 ALTER DATABASE hertzbeat CHARACTER SET utf8 COLLATE utf8_general_ci;

tomsun28 commented 1 month ago

hi, what your mysql version?

milton4code commented 1 month ago

mysql version is 5.6.51

tomsun28 commented 1 month ago

suggest 5.7+ or 8