Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to migrate from H2 to MySQL based on version 3.4.1 #1009

Open
qianxiaodewo opened this issue Mar 13, 2024 · 0 comments
Open

How to migrate from H2 to MySQL based on version 3.4.1 #1009

qianxiaodewo opened this issue Mar 13, 2024 · 0 comments

Comments

@qianxiaodewo
Copy link

qianxiaodewo commented Mar 13, 2024

At present, the company does not want to upgrade to the latest version;
I want to migrate from the H2 database to MySQL based on this version
I have checked online and found that the following files need to be modified: ngrinder controller/pom.xml, Database. Java, and Database. conf
At present, these configuration files are as follows:
Pom.xml:

create table if not exists AGENT (
    id bigint auto_increment unique,
    approved char(1) not null,
    hostName varchar(255),
    ip varchar(255),
    primary key (id)
);
#########################################################
create table if not exists NUSER (
    id bigint auto_increment unique,
    created_date timestamp NULL DEFAULT NULL,
    last_modified_date timestamp NULL DEFAULT NULL,
    authentication_provider_class varchar(255),
    description varchar(255),
    email varchar(255),
    enabled char(1) not null,
    is_external char(1),
    mobile_phone varchar(255),
    password varchar(255),
    role_name varchar(255) not null,
    timeZone varchar(255),
    user_id varchar(255) not null unique,
    user_language varchar(255),
    user_name varchar(255),
    created_user bigint,
    last_modified_user bigint,
    primary key (id)
);
#########################################################
create table if not exists PERF_TEST (
    id bigint auto_increment unique,
    created_date timestamp NULL DEFAULT NULL,
    last_modified_date timestamp NULL DEFAULT NULL,
    agent_count int,
    description text,
    distribution_path varchar(255),
    duration bigint,
    errors bigint,
    finish_time timestamp NULL DEFAULT NULL,
    ignore_sample_count int,
    ramp_up_init_count int,
    ramp_up_init_sleep_time int,
    last_progress_message text,
    mean_test_time double,
    peak_tps double,
    port int,
    ramp_up_step int,
    ramp_up_increment_interval int,
    processes int,
    progress_message text,
    run_count int,
    scheduled_time timestamp NULL DEFAULT NULL,
    script_name varchar(255),
    script_revision varchar(255),
    send_mail char(1),
    start_time timestamp NULL DEFAULT NULL,
    status varchar(255),
    stop_request char(1),
    tag_string varchar(255),
    target_hosts text,
    test_comment text,
    test_error_cause varchar(255),
    name varchar(255),
    test_time_standard_deviation double,
    tests bigint,
    threads int,
    threshold varchar(255),
    tps double,
    use_rampup char(1),
    vuser_per_agent int,
    created_user bigint,
    last_modified_user bigint,
    region varchar(255),
    safe_distribution char(1) default 'F',
    sampling_interval int default 1,
    param varchar(256) default '',
    ramp_up_type varchar(10) default 'PROCESS',
    scm varchar(30) default 'svn',
    ignore_too_many_error char(1) default 'F',
    primary key (id)
);
#########################################################
create table if not exists PERF_TEST_TAG (
    perf_test_id bigint not null,
    tag_id bigint not null,
    primary key (perf_test_id, tag_id)
);
#########################################################
create table if not exists TAG (
    id bigint auto_increment unique,
    created_date timestamp NULL DEFAULT NULL,
    last_modified_date timestamp NULL DEFAULT NULL,
    tagValue varchar(255),
    created_user bigint,
    last_modified_user bigint,
    primary key (id)
);
#########################################################
create table if not exists SHARED_USER (
    owner_id bigint not null,
    follow_id bigint not null,
    primary key (owner_id, follow_id)
);

Database, Java
mysql(com.mysql.jdbc.Driver.class, org.hibernate.dialect.MySQL5Dialect.class, "jdbc:mysql://%s?%s") { @Override protected void setupVariants(BasicDataSource dataSource, PropertiesWrapper databaseProperties) { dataSource.setUrl(String.format(getUrlTemplate(), databaseProperties.getProperty(DatabaseConfig.PROP_DATABASE_URL), StringUtils.trimToEmpty(databaseProperties.getProperty(DatabaseConfig.PROP_DATABASE_URL_OPTION)))); dataSource.setUsername(databaseProperties.getProperty(DatabaseConfig.PROP_DATABASE_USERNAME)); dataSource.setPassword(databaseProperties.getProperty(DatabaseConfig.PROP_DATABASE_PASSWORD)); } };
Database. conf:

# H2 / cubrid can be set
#database.type=H2
#database.type=cubrid
database.type=mysql
# for cubrid. You should configure the following.
# database.url=localhost:33000:ngrinder
database.url=192.168.53.100:3306/ngrinder
database.url_option=useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&nullNamePatternMatchesAll=true&nullCatalogMeansCurrent=true
database.username=ngrinder
database.password=ngrinder

But the startup keeps reporting errors
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'databaseUpdater': Invocation of init method failed; nested exception is java.lang.ClassCastException: java.time.LocalDateTime cannot be cast to java.lang.String at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:800) at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:444) at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294) at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1349) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1342) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:505) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) at org.eclipse.jetty.server.Server.start(Server.java:387) at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) at org.eclipse.jetty.server.Server.doStart(Server.java:354) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.ngrinder.NGrinderControllerStarter.run(NGrinderControllerStarter.java:239) at org.ngrinder.NGrinderControllerStarter.main(NGrinderControllerStarter.java:313) Caused by: java.lang.ClassCastException: java.time.LocalDateTime cannot be cast to java.lang.String at liquibase.database.AbstractDatabase.getRanChangeSetList(AbstractDatabase.java:934) at liquibase.database.AbstractDatabase.checkDatabaseChangeLogTable(AbstractDatabase.java:509) at liquibase.Liquibase.checkDatabaseChangeLogTable(Liquibase.java:576) at org.ngrinder.infra.init.LiquibaseEx.update(LiquibaseEx.java:76) at org.ngrinder.infra.init.DatabaseUpdater.init(DatabaseUpdater.java:91) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:354) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:305) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:296) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1054) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:829) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:444) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:326) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107) at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:800) at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:444) at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:791) at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:294) at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1349) at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1342) at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741) at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:505) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132) at org.eclipse.jetty.server.Server.start(Server.java:387) at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61) at org.eclipse.jetty.server.Server.doStart(Server.java:354) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68) at org.ngrinder.NGrinderControllerStarter.run(NGrinderControllerStarter.java:239) at org.ngrinder.NGrinderControllerStarter.main(NGrinderControllerStarter.java:313)

May I ask what the problem is

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant