qinsql / QinSQL

AI 时代的智能数据库

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

mysql: DBeaver和hms 错误

mervynzhang opened this issue · comments

先建了一个表 create table if not exists pet(name varchar(20), age int);

在跑hive-schematool 的时候, pet 就看不到了。 metastore的表也没建成功
https://github.com/apache/hive/blob/master/standalone-metastore/metastore-server/src/main/sql/mysql/hive-schema-3.1.0.mysql.sql

重启qinsql的话,有错误

ERROR 05:40:15.963 Fatal error: unable to start lealone. See log for stacktrace.
org.lealone.common.exceptions.ConfigException: Failed to init transaction engine: AOTE
	at org.lealone.main.Lealone.checkException(Lealone.java:353) ~[qinsql.jar:?]
	at org.lealone.main.Lealone.registerAndInitEngines(Lealone.java:341) ~[qinsql.jar:?]
	at org.lealone.main.Lealone.initTransactionEngineEngines(Lealone.java:260) ~[qinsql.jar:?]
	at org.lealone.main.Lealone.initPluggableEngines(Lealone.java:243) ~[qinsql.jar:?]
	at org.lealone.main.Lealone.init(Lealone.java:219) ~[qinsql.jar:?]
	at org.lealone.main.Lealone.run(Lealone.java:151) [qinsql.jar:?]
	at org.lealone.main.Lealone.start(Lealone.java:111) [qinsql.jar:?]
	at org.lealone.main.Lealone.start(Lealone.java:85) [qinsql.jar:?]
	at org.lealone.main.Lealone.main(Lealone.java:45) [qinsql.jar:?]
	at org.qinsql.main.QinSQL.main(QinSQL.java:27) [qinsql.jar:?]
	at org.qinsql.main.QinSQL.main(QinSQL.java:14) [qinsql.jar:?]
Caused by: java.lang.IllegalStateException: The file is locked: nio:/dbdata/redo_log/redoLog_3 [5.2.0/7]
	at org.lealone.common.util.DataUtils.newIllegalStateException(DataUtils.java:616) ~[qinsql.jar:?]
	at org.lealone.storage.fs.FileStorage.newISE(FileStorage.java:199) ~[qinsql.jar:?]
	at org.lealone.storage.fs.FileStorage.<init>(FileStorage.java:190) ~[qinsql.jar:?]
	at org.lealone.storage.fs.FileStorage.open(FileStorage.java:79) ~[qinsql.jar:?]
	at org.lealone.transaction.aote.log.RedoLogChunk.getFileStorage(RedoLogChunk.java:80) ~[qinsql.jar:?]
	at org.lealone.transaction.aote.log.RedoLogChunk.<init>(RedoLogChunk.java:70) ~[qinsql.jar:?]
	at org.lealone.transaction.aote.log.RedoLog.init(RedoLog.java:76) ~[qinsql.jar:?]
	at org.lealone.transaction.aote.AOTransactionEngine.init(AOTransactionEngine.java:146) ~[qinsql.jar:?]
	at org.lealone.main.Lealone.initPluggableEngine(Lealone.java:367) ~[qinsql.jar:?]
	at org.lealone.main.Lealone.registerAndInitEngines(Lealone.java:338) ~[qinsql.jar:?]
	... 9 more
  

出现 The file is locked: nio:/dbdata/redo_log/redoLog_3
说明 qinsql 的进程还在运行。

metastore 的脚本我跑了一下,SDS 这个表放在之后才定义,前面的表直接引用它,所以找不到。

metastore 的脚本我试了 postgresql、mysql、derby 都跑不通,有些语法还不支持的。
它里面就是没有 h2 的脚本,如果有的话就可以直接拿 h2 的脚本来跑。

遇到另一个报错, mysql 连过去的时候报错, PET2 是之前测试建的表,

INFO 06:48:46.852 Client socket channel closed: /127.0.0.1:60312
ERROR 06:48:49.605 Failed to create session
org.lealone.common.exceptions.JdbcSQLException: Table "PET2" already exists; SQL statement:
CREATE CACHED TABLE PUBLIC.PET2(
NAME VARCHAR(20),
AGE INT
) [42101-0]
at org.lealone.common.exceptions.DbException.getJdbcSQLException(DbException.java:342) ~[qinsql.jar:?]
at org.lealone.common.exceptions.DbException.get(DbException.java:173) ~[qinsql.jar:?]
at org.lealone.common.exceptions.DbException.get(DbException.java:150) ~[qinsql.jar:?]
at org.lealone.sql.ddl.CreateTable.update(CreateTable.java:160) ~[qinsql.jar:?]
at org.lealone.sql.executor.YieldableLocalUpdate.executeInternal(YieldableLocalUpdate.java:23) ~[qinsql.jar:?]
at org.lealone.sql.executor.YieldableBase.run(YieldableBase.java:104) ~[qinsql.jar:?]
at org.lealone.sql.StatementBase.syncExecute(StatementBase.java:507) ~[qinsql.jar:?]
at org.lealone.sql.StatementBase.executeUpdate(StatementBase.java:533) ~[qinsql.jar:?]
at org.lealone.db.MetaRecord.execute(MetaRecord.java:64) ~[qinsql.jar:?]
at org.lealone.db.Database.openMetaTable(Database.java:509) ~[qinsql.jar:?]
at org.lealone.db.Database.openDatabase(Database.java:443) ~[qinsql.jar:?]
at org.lealone.db.Database.init(Database.java:373) ~[qinsql.jar:?]
at org.lealone.db.session.ServerSessionFactory.initDatabase(ServerSessionFactory.java:73) ~[qinsql.jar:?]
at org.lealone.db.session.ServerSessionFactory.createServerSession(ServerSessionFactory.java:55) ~[qinsql.jar:?]
at org.lealone.db.session.ServerSessionFactory.createSession(ServerSessionFactory.java:40) ~[qinsql.jar:?]
at org.lealone.db.ConnectionInfo.createSession(ConnectionInfo.java:639) ~[qinsql.jar:?]
at org.qinsql.mysql.server.MySQLServerConnection.createSession(MySQLServerConnection.java:123) ~[qinsql.jar:?]
at org.qinsql.mysql.server.MySQLServerConnection.authenticate(MySQLServerConnection.java:96) [qinsql.jar:?]
at org.qinsql.mysql.server.handler.AuthPacketHandler.handle(AuthPacketHandler.java:24) [qinsql.jar:?]
at org.qinsql.mysql.server.MySQLServerConnection.handle(MySQLServerConnection.java:327) [qinsql.jar:?]
at org.lealone.net.nio.NioEventLoop.read(NioEventLoop.java:224) [qinsql.jar:?]
at org.lealone.server.Scheduler.handleSelectedKeys(Scheduler.java:400) [qinsql.jar:?]
at org.lealone.server.Scheduler.runEventLoop(Scheduler.java:386) [qinsql.jar:?]
at org.lealone.server.Scheduler.run(Scheduler.java:94) [qinsql.jar:?]

遇到另一个报错, mysql 连过去的时候报错, PET2 是之前测试建的表,

INFO 06:48:46.852 Client socket channel closed: /127.0.0.1:60312 ERROR 06:48:49.605 Failed to create session org.lealone.common.exceptions.JdbcSQLException: Table "PET2" already exists; SQL statement: CREATE CACHED TABLE PUBLIC.PET2( NAME VARCHAR(20), AGE INT ) [42101-0] at org.lealone.common.exceptions.DbException.getJdbcSQLException(DbException.java:342) ~[qinsql.jar:?] at org.lealone.common.exceptions.DbException.get(DbException.java:173) ~[qinsql.jar:?] at org.lealone.common.exceptions.DbException.get(DbException.java:150) ~[qinsql.jar:?] at org.lealone.sql.ddl.CreateTable.update(CreateTable.java:160) ~[qinsql.jar:?] at org.lealone.sql.executor.YieldableLocalUpdate.executeInternal(YieldableLocalUpdate.java:23) ~[qinsql.jar:?] at org.lealone.sql.executor.YieldableBase.run(YieldableBase.java:104) ~[qinsql.jar:?] at org.lealone.sql.StatementBase.syncExecute(StatementBase.java:507) ~[qinsql.jar:?] at org.lealone.sql.StatementBase.executeUpdate(StatementBase.java:533) ~[qinsql.jar:?] at org.lealone.db.MetaRecord.execute(MetaRecord.java:64) ~[qinsql.jar:?] at org.lealone.db.Database.openMetaTable(Database.java:509) ~[qinsql.jar:?] at org.lealone.db.Database.openDatabase(Database.java:443) ~[qinsql.jar:?] at org.lealone.db.Database.init(Database.java:373) ~[qinsql.jar:?] at org.lealone.db.session.ServerSessionFactory.initDatabase(ServerSessionFactory.java:73) ~[qinsql.jar:?] at org.lealone.db.session.ServerSessionFactory.createServerSession(ServerSessionFactory.java:55) ~[qinsql.jar:?] at org.lealone.db.session.ServerSessionFactory.createSession(ServerSessionFactory.java:40) ~[qinsql.jar:?] at org.lealone.db.ConnectionInfo.createSession(ConnectionInfo.java:639) ~[qinsql.jar:?] at org.qinsql.mysql.server.MySQLServerConnection.createSession(MySQLServerConnection.java:123) ~[qinsql.jar:?] at org.qinsql.mysql.server.MySQLServerConnection.authenticate(MySQLServerConnection.java:96) [qinsql.jar:?] at org.qinsql.mysql.server.handler.AuthPacketHandler.handle(AuthPacketHandler.java:24) [qinsql.jar:?] at org.qinsql.mysql.server.MySQLServerConnection.handle(MySQLServerConnection.java:327) [qinsql.jar:?] at org.lealone.net.nio.NioEventLoop.read(NioEventLoop.java:224) [qinsql.jar:?] at org.lealone.server.Scheduler.handleSelectedKeys(Scheduler.java:400) [qinsql.jar:?] at org.lealone.server.Scheduler.runEventLoop(Scheduler.java:386) [qinsql.jar:?] at org.lealone.server.Scheduler.run(Scheduler.java:94) [qinsql.jar:?]

这个错是数据库被初始化两次了,为什么会初始化两次? 最好把你的操作过程讲一下,按理说 org.lealone.db.Database.init() 是加了 synchronized 的不应该被调用两次的。

你可以把 logs/qinsql.log 文件发出来看看。

我在容器里跑的, 等我重新整理下, 在跑一次

我在容器里清空原来的数据, 然后 手动调整 hive-schema-3.1.0.mysql.sql 里的语句顺序和一些语法(DOUBLE(53,[*]4), 改成 DOUBLE(53), 把所有的命令都跑下来了。 建立70多个表, 重启qinsql, 现在卡住Stopping MySQLServer accepter.

我之前遇到的可能也是卡stop了, 然后强行停掉就数据损坏了

image

出现 The file is locked: nio:/dbdata/redo_log/redoLog_3 说明 qinsql 的进程还在运行。

metastore 的脚本我跑了一下,SDS 这个表放在之后才定义,前面的表直接引用它,所以找不到。

但为啥mysql 可以乱序执行? mysql会自动排序?

对了, 我把hive-schema-3.1.0.mysql.sql里的命令都执行后, 用hive metastore 连接qinsql

2023-06-05 09:56:44: Starting Hive Metastore Server
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/apache-hive-3.1.3-bin/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-3.3.2/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
MetaException(message:Error creating transactional connection factory)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:84)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:93)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:8672)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:8667)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:8937)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:8854)
	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.apache.hadoop.util.RunJar.run(RunJar.java:323)
	at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
Caused by: MetaException(message:Error creating transactional connection factory)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:208)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:108)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:80)
	... 11 more
Caused by: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
NestedThrowables:
java.lang.reflect.InvocationTargetException
	at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:671)
	at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:830)
	at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:334)
	at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:213)
	at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at javax.jdo.JDOHelper$16.run(JDOHelper.java:1965)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.jdo.JDOHelper.invoke(JDOHelper.java:1960)
	at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1166)
	at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
	at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
	at org.apache.hadoop.hive.metastore.ObjectStore.getPMF(ObjectStore.java:651)
	at org.apache.hadoop.hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.java:694)
	at org.apache.hadoop.hive.metastore.ObjectStore.initializeHelper(ObjectStore.java:484)
	at org.apache.hadoop.hive.metastore.ObjectStore.initialize(ObjectStore.java:421)
	at org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:376)
	at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:79)
	at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:139)
	at org.apache.hadoop.hive.metastore.RawStoreProxy.<init>(RawStoreProxy.java:59)
	at org.apache.hadoop.hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.java:67)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStoreForConf(HiveMetaStore.java:720)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMSForConf(HiveMetaStore.java:698)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:692)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:775)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:540)
	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.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:147)
	... 13 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.GeneratedConstructorAccessor75.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:606)
	at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:330)
	at org.datanucleus.store.AbstractStoreManager.registerConnectionFactory(AbstractStoreManager.java:203)
	at org.datanucleus.store.AbstractStoreManager.<init>(AbstractStoreManager.java:162)
	at org.datanucleus.store.rdbms.RDBMSStoreManager.<init>(RDBMSStoreManager.java:285)
	at sun.reflect.GeneratedConstructorAccessor74.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:606)
	at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:301)
	at org.datanucleus.NucleusContextHelper.createStoreManagerForProperties(NucleusContextHelper.java:133)
	at org.datanucleus.PersistenceNucleusContextImpl.initialise(PersistenceNucleusContextImpl.java:422)
	at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:817)
	... 43 more
Caused by: org.datanucleus.exceptions.NucleusException: Attempt to invoke the "HikariCP" plugin to create a ConnectionPool gave an error : Failed to initialize pool: Could not retrieve transaction isolation level from server
	at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:232)
	at org.datanucleus.store.rdbms.ConnectionFactoryImpl.initialiseDataSources(ConnectionFactoryImpl.java:117)
	at org.datanucleus.store.rdbms.ConnectionFactoryImpl.<init>(ConnectionFactoryImpl.java:82)
	... 59 more
Caused by: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Could not retrieve transaction isolation level from server
	at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:544)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:529)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:112)
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:72)
	at org.datanucleus.store.rdbms.connectionpool.HikariCPConnectionPoolFactory.createConnectionPool(HikariCPConnectionPoolFactory.java:176)
	at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:213)
	... 61 more
Caused by: java.sql.SQLException: Could not retrieve transaction isolation level from server
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
	at com.mysql.cj.jdbc.ConnectionImpl.getTransactionIsolation(ConnectionImpl.java:1223)
	at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:444)
	at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:403)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:361)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:199)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:444)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:515)
	... 65 more
Exception in thread "main" MetaException(message:Error creating transactional connection factory)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:84)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:93)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:8672)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:8667)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:8937)
	at org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:8854)
	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.apache.hadoop.util.RunJar.run(RunJar.java:323)
	at org.apache.hadoop.util.RunJar.main(RunJar.java:236)
Caused by: MetaException(message:Error creating transactional connection factory)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:208)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.invoke(RetryingHMSHandler.java:108)
	at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:80)
	... 11 more
Caused by: javax.jdo.JDOFatalInternalException: Error creating transactional connection factory
NestedThrowables:
java.lang.reflect.InvocationTargetException
	at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:671)
	at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:830)
	at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.createPersistenceManagerFactory(JDOPersistenceManagerFactory.java:334)
	at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.getPersistenceManagerFactory(JDOPersistenceManagerFactory.java:213)
	at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at javax.jdo.JDOHelper$16.run(JDOHelper.java:1965)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.jdo.JDOHelper.invoke(JDOHelper.java:1960)
	at javax.jdo.JDOHelper.invokeGetPersistenceManagerFactoryOnImplementation(JDOHelper.java:1166)
	at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:808)
	at javax.jdo.JDOHelper.getPersistenceManagerFactory(JDOHelper.java:701)
	at org.apache.hadoop.hive.metastore.ObjectStore.getPMF(ObjectStore.java:651)
	at org.apache.hadoop.hive.metastore.ObjectStore.getPersistenceManager(ObjectStore.java:694)
	at org.apache.hadoop.hive.metastore.ObjectStore.initializeHelper(ObjectStore.java:484)
	at org.apache.hadoop.hive.metastore.ObjectStore.initialize(ObjectStore.java:421)
	at org.apache.hadoop.hive.metastore.ObjectStore.setConf(ObjectStore.java:376)
	at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:79)
	at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:139)
	at org.apache.hadoop.hive.metastore.RawStoreProxy.<init>(RawStoreProxy.java:59)
	at org.apache.hadoop.hive.metastore.RawStoreProxy.getProxy(RawStoreProxy.java:67)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.newRawStoreForConf(HiveMetaStore.java:720)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMSForConf(HiveMetaStore.java:698)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.getMS(HiveMetaStore.java:692)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.createDefaultDB(HiveMetaStore.java:775)
	at org.apache.hadoop.hive.metastore.HiveMetaStore$HMSHandler.init(HiveMetaStore.java:540)
	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.apache.hadoop.hive.metastore.RetryingHMSHandler.invokeInternal(RetryingHMSHandler.java:147)
	... 13 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.GeneratedConstructorAccessor75.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:606)
	at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:330)
	at org.datanucleus.store.AbstractStoreManager.registerConnectionFactory(AbstractStoreManager.java:203)
	at org.datanucleus.store.AbstractStoreManager.<init>(AbstractStoreManager.java:162)
	at org.datanucleus.store.rdbms.RDBMSStoreManager.<init>(RDBMSStoreManager.java:285)
	at sun.reflect.GeneratedConstructorAccessor74.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.datanucleus.plugin.NonManagedPluginRegistry.createExecutableExtension(NonManagedPluginRegistry.java:606)
	at org.datanucleus.plugin.PluginManager.createExecutableExtension(PluginManager.java:301)
	at org.datanucleus.NucleusContextHelper.createStoreManagerForProperties(NucleusContextHelper.java:133)
	at org.datanucleus.PersistenceNucleusContextImpl.initialise(PersistenceNucleusContextImpl.java:422)
	at org.datanucleus.api.jdo.JDOPersistenceManagerFactory.freezeConfiguration(JDOPersistenceManagerFactory.java:817)
	... 43 more
Caused by: org.datanucleus.exceptions.NucleusException: Attempt to invoke the "HikariCP" plugin to create a ConnectionPool gave an error : Failed to initialize pool: Could not retrieve transaction isolation level from server
	at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:232)
	at org.datanucleus.store.rdbms.ConnectionFactoryImpl.initialiseDataSources(ConnectionFactoryImpl.java:117)
	at org.datanucleus.store.rdbms.ConnectionFactoryImpl.<init>(ConnectionFactoryImpl.java:82)
	... 59 more
Caused by: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Could not retrieve transaction isolation level from server
	at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:544)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:529)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:112)
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:72)
	at org.datanucleus.store.rdbms.connectionpool.HikariCPConnectionPoolFactory.createConnectionPool(HikariCPConnectionPoolFactory.java:176)
	at org.datanucleus.store.rdbms.ConnectionFactoryImpl.generateDataSources(ConnectionFactoryImpl.java:213)
	... 61 more
Caused by: java.sql.SQLException: Could not retrieve transaction isolation level from server
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
	at com.mysql.cj.jdbc.ConnectionImpl.getTransactionIsolation(ConnectionImpl.java:1223)
	at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:444)
	at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:403)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:361)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:199)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:444)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:515)
	... 65 more

出现 The file is locked: nio:/dbdata/redo_log/redoLog_3 说明 qinsql 的进程还在运行。
metastore 的脚本我跑了一下,SDS 这个表放在之后才定义,前面的表直接引用它,所以找不到。

但为啥mysql 可以乱序执行? mysql会自动排序?

mysql 它把外键引入约束禁用了。

Caused by: java.sql.SQLException: Could not retrieve transaction isolation level from server
这个问题已经修复,支持 select @@session.tx_isolation 后就可以了。

把 hms的schema.verification禁用后 (hive.metastore.schema.verification), 目前还有这个报错。

Error: Syntax error in SQL statement "SET SESSION TRANSACTION ISOLATION[*] LEVEL READ COMMITTED" [42000-0] (state=HY000,code=42000)

SELECT @@time_zone 我自己试着workaround了下, 现在剩下这个了

新问题,DBeaver 突然不能找到表了, 我用mysql client 连过去还能正常用。可能是剩下的几个错误引起的

ERROR 04:11:08.996 Failed to execute statement: /* ApplicationName=DBeaver 23.0.1 - Metadata / SHOW ENGINES
ERROR 04:11:09.233 Failed to execute statement: /
ApplicationName=DBeaver 23.0.1 - Metadata / SHOW CHARSET
ERROR 04:11:09.921 Failed to execute statement: /
ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW PLUGINS

INFO 04:11:05.506 execute sql: /* mysql-connector-java-8.0.29 (Revision: dd61577595edad45c398af508cf91ad26fc4144f) */SELECT  @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS charact
er_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@collation_server AS collation_server, @@collation_c
onnection AS collation_connection, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@language AS language, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allow
ed_packet AS max_allowed_packet, @@net_write_timeout AS net_write_timeout, @@performance_schema AS performance_schema, @@query_cache_size AS query_cache_size, @@query_cache_type AS query_cache_type, @@sql_mode AS sql_mode,
 @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@tx_isolation AS transaction_isolation, @@wait_timeout AS wait_timeout
INFO 04:11:05.743 execute sql: SET NAMES utf8mb4
INFO 04:11:05.970 execute sql: SET autocommit=1
INFO 04:11:06.200 execute sql: SET sql_mode='STRICT_TRANS_TABLES'

INFO 04:11:06.428 execute sql: /* ApplicationName=DBeaver 23.0.1 - Main */ SET autocommit=1

INFO 04:11:06.680 execute sql: /* ApplicationName=DBeaver 23.0.1 - Main */ SELECT DATABASE()

INFO 04:11:07.621 execute sql: /* mysql-connector-java-8.0.29 (Revision: dd61577595edad45c398af508cf91ad26fc4144f) */SELECT  @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS charact
er_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@collation_server AS collation_server, @@collation_c
onnection AS collation_connection, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@language AS language, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allow
ed_packet AS max_allowed_packet, @@net_write_timeout AS net_write_timeout, @@performance_schema AS performance_schema, @@query_cache_size AS query_cache_size, @@query_cache_type AS query_cache_type, @@sql_mode AS sql_mode,
 @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@tx_isolation AS transaction_isolation, @@wait_timeout AS wait_timeout
INFO 04:11:07.847 execute sql: SET NAMES utf8mb4
INFO 04:11:08.074 execute sql: SET autocommit=1
INFO 04:11:08.299 execute sql: SET sql_mode='STRICT_TRANS_TABLES'
INFO 04:11:08.524 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SET autocommit=1
INFO 04:11:08.749 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SELECT DATABASE()
INFO 04:11:08.995 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW ENGINES
ERROR 04:11:08.996 Failed to execute statement: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW ENGINES
org.lealone.common.exceptions.JdbcSQLException: Syntax error in SQL statement "SELECT "; expected "TOP, LIMIT, DISTINCT, ALL, *, NOT, EXISTS"; SQL statement:
SELECT  [42001-0]
        at org.lealone.common.exceptions.DbException.getJdbcSQLException(DbException.java:342) ~[qinsql.jar:?]
        at org.lealone.common.exceptions.DbException.getSyntaxError(DbException.java:198) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.getSyntaxError(MySQLParser.java:544) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readTerm(MySQLParser.java:2769) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readFactor(MySQLParser.java:2150) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readSum(MySQLParser.java:2137) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readConcat(MySQLParser.java:2110) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readCondition(MySQLParser.java:1974) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readAnd(MySQLParser.java:1955) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readExpression(MySQLParser.java:1947) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSimpleSelectPart(MySQLParser.java:1673) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSimple(MySQLParser.java:1496) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSub(MySQLParser.java:1473) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectUnion(MySQLParser.java:1443) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelect(MySQLParser.java:1431) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseStatement(MySQLParser.java:453) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:325) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:288) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:179) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareStatementLocal(ServerSession.java:412) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.prepare(MySQLParser.java:996) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseShow(MySQLParser.java:989) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseStatement(MySQLParser.java:463) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:325) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:284) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:179) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareStatement(ServerSession.java:456) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareSQLCommand(ServerSession.java:429) ~[qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.executeStatement(MySQLServerConnection.java:172) [qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.executeStatement(MySQLServerConnection.java:165) [qinsql.jar:?]
        at org.qinsql.mysql.server.handler.CommandPacketHandler.handle(CommandPacketHandler.java:34) [qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.handle(MySQLServerConnection.java:327) [qinsql.jar:?]
        at org.lealone.net.nio.NioEventLoop.read(NioEventLoop.java:224) [qinsql.jar:?]
        at org.lealone.server.Scheduler.handleSelectedKeys(Scheduler.java:400) [qinsql.jar:?]
        at org.lealone.server.Scheduler.runEventLoop(Scheduler.java:386) [qinsql.jar:?]
        at org.lealone.server.Scheduler.run(Scheduler.java:94) [qinsql.jar:?]
INFO 04:11:09.232 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW CHARSET
ERROR 04:11:09.233 Failed to execute statement: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW CHARSET
org.lealone.common.exceptions.JdbcSQLException: Syntax error in SQL statement "SELECT "; expected "TOP, LIMIT, DISTINCT, ALL, *, NOT, EXISTS"; SQL statement:
SELECT  [42001-0]
        at org.lealone.common.exceptions.DbException.getJdbcSQLException(DbException.java:342) ~[qinsql.jar:?]
        at org.lealone.common.exceptions.DbException.getSyntaxError(DbException.java:198) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.getSyntaxError(MySQLParser.java:544) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readTerm(MySQLParser.java:2769) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readFactor(MySQLParser.java:2150) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readSum(MySQLParser.java:2137) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readConcat(MySQLParser.java:2110) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readCondition(MySQLParser.java:1974) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readAnd(MySQLParser.java:1955) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readExpression(MySQLParser.java:1947) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSimpleSelectPart(MySQLParser.java:1673) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSimple(MySQLParser.java:1496) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSub(MySQLParser.java:1473) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectUnion(MySQLParser.java:1443) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelect(MySQLParser.java:1431) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseStatement(MySQLParser.java:453) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:325) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:288) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:179) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareStatementLocal(ServerSession.java:412) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.prepare(MySQLParser.java:996) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseShow(MySQLParser.java:989) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseStatement(MySQLParser.java:463) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:325) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:284) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:179) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareStatement(ServerSession.java:456) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareSQLCommand(ServerSession.java:429) ~[qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.executeStatement(MySQLServerConnection.java:172) [qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.executeStatement(MySQLServerConnection.java:165) [qinsql.jar:?]
        at org.qinsql.mysql.server.handler.CommandPacketHandler.handle(CommandPacketHandler.java:34) [qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.handle(MySQLServerConnection.java:327) [qinsql.jar:?]
        at org.lealone.net.nio.NioEventLoop.read(NioEventLoop.java:224) [qinsql.jar:?]
        at org.lealone.server.Scheduler.handleSelectedKeys(Scheduler.java:400) [qinsql.jar:?]
        at org.lealone.server.Scheduler.runEventLoop(Scheduler.java:386) [qinsql.jar:?]
        at org.lealone.server.Scheduler.run(Scheduler.java:94) [qinsql.jar:?]
INFO 04:11:09.460 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW COLLATION
INFO 04:11:09.693 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SELECT @@GLOBAL.character_set_server,@@GLOBAL.collation_server
INFO 04:11:09.921 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW PLUGINS
ERROR 04:11:09.921 Failed to execute statement: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW PLUGINS
org.lealone.common.exceptions.JdbcSQLException: Syntax error in SQL statement "SELECT "; expected "TOP, LIMIT, DISTINCT, ALL, *, NOT, EXISTS"; SQL statement:
SELECT  [42001-0]
        at org.lealone.common.exceptions.DbException.getJdbcSQLException(DbException.java:342) ~[qinsql.jar:?]
        at org.lealone.common.exceptions.DbException.getSyntaxError(DbException.java:198) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.getSyntaxError(MySQLParser.java:544) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readTerm(MySQLParser.java:2769) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readFactor(MySQLParser.java:2150) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readSum(MySQLParser.java:2137) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readConcat(MySQLParser.java:2110) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readCondition(MySQLParser.java:1974) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readAnd(MySQLParser.java:1955) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readExpression(MySQLParser.java:1947) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSimpleSelectPart(MySQLParser.java:1673) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSimple(MySQLParser.java:1496) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSub(MySQLParser.java:1473) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectUnion(MySQLParser.java:1443) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelect(MySQLParser.java:1431) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseStatement(MySQLParser.java:453) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:325) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:288) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:179) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareStatementLocal(ServerSession.java:412) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.prepare(MySQLParser.java:996) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseShow(MySQLParser.java:989) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseStatement(MySQLParser.java:463) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:325) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:284) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:179) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareStatement(ServerSession.java:456) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareSQLCommand(ServerSession.java:429) ~[qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.executeStatement(MySQLServerConnection.java:172) [qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.executeStatement(MySQLServerConnection.java:165) [qinsql.jar:?]
        at org.qinsql.mysql.server.handler.CommandPacketHandler.handle(CommandPacketHandler.java:34) [qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.handle(MySQLServerConnection.java:327) [qinsql.jar:?]
        at org.lealone.net.nio.NioEventLoop.read(NioEventLoop.java:224) [qinsql.jar:?]
        at org.lealone.server.Scheduler.handleSelectedKeys(Scheduler.java:400) [qinsql.jar:?]
        at org.lealone.server.Scheduler.runEventLoop(Scheduler.java:386) [qinsql.jar:?]
        at org.lealone.server.Scheduler.run(Scheduler.java:94) [qinsql.jar:?]
INFO 04:11:10.147 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SHOW VARIABLES LIKE 'lower_case_table_names'
INFO 04:11:10.380 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ show databases
INFO 04:11:10.617 execute sql: /* ApplicationName=DBeaver 23.0.1 - Metadata */ SELECT * FROM information_schema.TABLES t
WHERE
        t.TABLE_SCHEMA = 'information_schema'
        AND t.TABLE_NAME = 'CHECK_CONSTRAINTS'
INFO 04:11:11.609 execute sql: /* mysql-connector-java-8.0.29 (Revision: dd61577595edad45c398af508cf91ad26fc4144f) */SELECT  @@session.auto_increment_increment AS auto_increment_increment, @@character_set_client AS charact
er_set_client, @@character_set_connection AS character_set_connection, @@character_set_results AS character_set_results, @@character_set_server AS character_set_server, @@collation_server AS collation_server, @@collation_c
onnection AS collation_connection, @@init_connect AS init_connect, @@interactive_timeout AS interactive_timeout, @@language AS language, @@license AS license, @@lower_case_table_names AS lower_case_table_names, @@max_allow
ed_packet AS max_allowed_packet, @@net_write_timeout AS net_write_timeout, @@performance_schema AS performance_schema, @@query_cache_size AS query_cache_size, @@query_cache_type AS query_cache_type, @@sql_mode AS sql_mode,
 @@system_time_zone AS system_time_zone, @@time_zone AS time_zone, @@tx_isolation AS transaction_isolation, @@wait_timeout AS wait_timeout
INFO 04:11:11.839 execute sql: SET NAMES utf8mb4
INFO 04:11:12.067 execute sql: SET autocommit=1
INFO 04:11:12.292 execute sql: SET sql_mode='STRICT_TRANS_TABLES'
INFO 04:11:12.517 execute sql: /* ApplicationName=DBeaver 23.0.1 - SQLEditor <Script-5.sql> */ SET autocommit=1
INFO 04:11:12.743 execute sql: /* ApplicationName=DBeaver 23.0.1 - SQLEditor <Script-5.sql> */ use MYSQL
INFO 04:11:14.674 execute sql: SELECT @@session.tx_isolation
INFO 04:11:17.948 execute sql: /* ApplicationName=DBeaver 23.0.1 - SQLEditor <Script-5.sql> */ select * from pet
LIMIT 0, 200
ERROR 04:11:17.948 Failed to execute statement: /* ApplicationName=DBeaver 23.0.1 - SQLEditor <Script-5.sql> */ select * from pet
LIMIT 0, 200
org.lealone.common.exceptions.JdbcSQLException: Table "PET" not found; SQL statement:
/* ApplicationName=DBeaver 23.0.1 - SQLEditor <Script-5.sql> */ select * from pet
LIMIT 0, 200 [42102-0]
        at org.lealone.common.exceptions.DbException.getJdbcSQLException(DbException.java:342) ~[qinsql.jar:?]
        at org.lealone.common.exceptions.DbException.get(DbException.java:173) ~[qinsql.jar:?]
        at org.lealone.common.exceptions.DbException.get(DbException.java:150) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readTableOrView(MySQLParser.java:5180) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.readTableFilter(MySQLParser.java:1762) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSimpleFromPart(MySQLParser.java:1688) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSimple(MySQLParser.java:1504) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectSub(MySQLParser.java:1473) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelectUnion(MySQLParser.java:1443) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseSelect(MySQLParser.java:1431) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parseStatement(MySQLParser.java:453) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:325) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:284) ~[qinsql.jar:?]
        at org.qinsql.mysql.sql.MySQLParser.parse(MySQLParser.java:179) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareStatement(ServerSession.java:456) ~[qinsql.jar:?]
        at org.lealone.db.session.ServerSession.prepareSQLCommand(ServerSession.java:429) ~[qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.executeStatement(MySQLServerConnection.java:172) [qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.executeStatement(MySQLServerConnection.java:165) [qinsql.jar:?]
        at org.qinsql.mysql.server.handler.CommandPacketHandler.handle(CommandPacketHandler.java:34) [qinsql.jar:?]
        at org.qinsql.mysql.server.MySQLServerConnection.handle(MySQLServerConnection.java:327) [qinsql.jar:?]
        at org.lealone.net.nio.NioEventLoop.read(NioEventLoop.java:224) [qinsql.jar:?]
        at org.lealone.server.Scheduler.handleSelectedKeys(Scheduler.java:400) [qinsql.jar:?]
        at org.lealone.server.Scheduler.runEventLoop(Scheduler.java:386) [qinsql.jar:?]
        at org.lealone.server.Scheduler.run(Scheduler.java:94) [qinsql.jar:?]

表丢失的问题应该是DBeaver 的问题。

“Caused by: java.lang.IllegalStateException: The file is locked: nio:/dbdata/redo_log/redoLog_3 [5.2.0/7]” 是k8s的问题, deployment 的 strategy 需要改成Recreate, 所有类型DB的deployment 都需要改成Recreate。

hms 现在的报错:

ERROR 06:35:28.069 Failed to execute statement: SET @@session.sql_mode=ANSI_QUOTES
org.lealone.common.exceptions.JdbcSQLException: Syntax error in SQL statement "SET @@[*]SESSION.SQL_MODE=ANSI_QUOTES "; expected "identifier"; SQL statement:

ERROR 06:35:31.295 Failed to execute statement: SHOW FULL TABLES FROM MYSQL LIKE 'VERSION'
org.lealone.common.exceptions.JdbcSQLException: Syntax error in SQL statement "SELECT "; expected "TOP, LIMIT, DISTINCT, ALL, *, NOT, EXISTS"; SQL statement:

SHOW FULL TABLES 看不能返回正常值, 好像都是Empty set。

show tables like 'version'; 第一次输错了, 引起报错和tring to reconnect. 第二次正确后, 还有 reconnect。

mysql> show tables like version;
ERROR 42122 (HY000): Column "VERSION" not found [42122-0]
No connection. Trying to reconnect...
Connection id: 16
Current database: *** NONE ***

ERROR 42122 (HY000): Column "VERSION" not found [42122-0]
No connection. Trying to reconnect...
Connection id: 17
Current database: *** NONE ***

ERROR 42122 (HY000): Column "VERSION" not found [42122-0]
mysql> show tables like 'version';
ERROR 2013 (HY000): Lost connection to MySQL server during query
No connection. Trying to reconnect...
Connection id: 18
Current database: *** NONE ***

+------------+--------------+
| table_name | table_schema |
+------------+--------------+
| version | public |
+------------+--------------+
1 row in set (0.08 sec)

mysql> show tables like 'version';
+------------+--------------+
| table_name | table_schema |
+------------+--------------+
| version | public |
+------------+--------------+
1 row in set (0.01 sec)

mysql> show tables like 'version';
+------------+--------------+
| table_name | table_schema |
+------------+--------------+
| version | public |
+------------+--------------+
1 row in set (0.01 sec)

mysql> show tables from mysql like 'version';
Empty set (0.01 sec)

mysql> show tables from mysql like 'version';
Empty set (0.00 sec)

show databases;
show schemas;
你用这两条命令看看区别在哪里,mysql 是数据库,public 才是模式,Lealone 跟 MySQL 是不同的。
use 命令切换的也是模式,不是数据库。

show databases; show schemas; 你用这两条命令看看区别在哪里,mysql 是数据库,public 才是模式,Lealone 跟 MySQL 是不同的。 use 命令切换的也是模式,不是数据库。

我没说清楚,现在的问题是hms 如果不能用 SHOW FULL TABLES FROM MYSQL LIKE 'CTLGS' 拿到期望的结果, 就报错了。

这些表在public都有, 但hms是希望schema 是mysql, 我找找看能不能改hms的默认 schema

qinsql log:

INFO 08:41:28.464 execute sql: SHOW FULL TABLES FROM `MYSQL` LIKE 'DBS'
INFO 08:41:28.507 execute sql: rollback
INFO 08:41:28.508 execute sql: commit
INFO 08:41:28.508 execute sql: SET autocommit=1
INFO 08:41:28.508 execute sql: SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED
INFO 08:41:30.512 execute sql: SET autocommit=0
INFO 08:41:30.513 execute sql: SELECT @@session.tx_isolation
INFO 08:41:30.554 execute sql: SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE
INFO 08:41:30.554 execute sql: SHOW DATABASES
INFO 08:41:30.596 execute sql: SHOW FULL TABLES FROM `MYSQL` LIKE 'CTLGS'
INFO 08:41:30.639 execute sql: rollback
INFO 08:41:30.640 execute sql: commit

hms log:

Caused by: org.datanucleus.store.rdbms.exceptions.MissingTableException: Required table missing : "`DBS`" in Catalog "" Schema "". DataNucleus requires this table to perform its persistence operations. Either your MetaData is incorrect, or you need to enable "datanucleus.schema.autoCreateTables"
	at org.datanucleus.store.rdbms.table.AbstractTable.exists(AbstractTable.java:606)
	at org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.performTablesValidation(RDBMSStoreManager.java:3385)
	at org.datanucleus.store.rdbms.RDBMSStoreManager$ClassAdder.run(RDBMSStoreManager.java:2896)
	at org.datanucleus.store.rdbms.AbstractSchemaTransaction.execute(AbstractSchemaTransaction.java:119)
	at org.datanucleus.store.rdbms.RDBMSStoreManager.manageClasses(RDBMSStoreManager.java:1627)
	at org.datanucleus.store.rdbms.RDBMSStoreManager.getDatastoreClass(RDBMSStoreManager.java:672)
	at org.datanucleus.store.rdbms.RDBMSStoreManager.getPropertiesForGenerator(RDBMSStoreManager.java:2088)
	at org.datanucleus.store.AbstractStoreManager.getStrategyValue(AbstractStoreManager.java:1271)
	at org.datanucleus.ExecutionContextImpl.newObjectId(ExecutionContextImpl.java:3760)
	at org.datanucleus.state.StateManagerImpl.setIdentity(StateManagerImpl.java:2267)
	at org.datanucleus.state.StateManagerImpl.initialiseForPersistentNew(StateManagerImpl.java:484)
	at org.datanucleus.state.StateManagerImpl.initialiseForPersistentNew(StateManagerImpl.java:120)
	at org.datanucleus.state.ObjectProviderFactoryImpl.newForPersistentNew(ObjectProviderFactoryImpl.java:218)
	at org.datanucleus.ExecutionContextImpl.persistObjectInternal(ExecutionContextImpl.java:2079)
	at org.datanucleus.ExecutionContextImpl.persistObjectWork(ExecutionContextImpl.java:1923)
	at org.datanucleus.ExecutionContextImpl.persistObject(ExecutionContextImpl.java:1778)
	at org.datanucleus.ExecutionContextThreadedImpl.persistObject(ExecutionContextThreadedImpl.java:217)
	at org.datanucleus.api.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:724)

先执行 create schema mysql,然后 use mysql,最后执行你的建表脚本试试,mysql 是一个系统模式,它不应该建立自己的模式吗。

能说说你想用 qinsql 完成什么事吗?用 lealone 的客户端和 sql 语法性能更好也稳定,用 mysql 的客户端和 sql 语法目前很不成熟的。花这么多时间我都能把 mysql 的 sql 脚本用 lealone 的方式重写一遍了。

先use mysql, 然后建表有帮助,schematool -dbType mysql -validate 过了,SHOW FULL TABLES FROM MYSQL LIKE 'CTLGS'; 也返回正确结果了。 hms还有错, 明天在研究吧。

我只是帮忙测试下mysql的兼容程度,毕竟现有的工具如果能直接利用mysql 兼容模式, 那推广难道会降低挺多。

DBeaver 直接可以用 lealone 客户端连,DBeaver 支持 jdbc 的,我平时都是这么用,稳定得很。

qinsql 接下来也会集成 hive。

我用hive metastore 主要是为了trino, trino 又是为了补充 spark+delta lake + s3/swift。

今天有点忙,开了hive的debug, 发现应该是 execute sql: SHOW FULL TABLES FROM MYSQL LIKE 'CTLGS'的时候hive pool.PoolBase: HikariPool 报错, reset了, 我对java 不熟,搞的有点慢, 后边在找时间看看

2023-06-07T02:38:57,516 DEBUG [main] pool.PoolBase: HikariPool-1 - Reset (autoCommit) on connection com.mysql.cj.jdbc.ConnectionImpl@29d2d081
2023-06-07T02:38:57,516 DEBUG [main] metastore.ObjectStore: db details for db default retrieved using SQL in 87.340094ms
2023-06-07T02:38:57,516  WARN [main] metastore.ObjectStore: Failed to get database hive.default, returning NoSuchObjectException

拿现有的用到 mysql 的软件去测试兼容性,这个方法是很低效的,正确的做法是参考 mysql 的官方文档和 文法文件,一个个对比看看哪些没有实现,qinsql 的 mysql 插件还有很多语法是不支持的,不用测我都知道。

我现在的时间没有全放在兼容 mysql 上,这个不是重点,也没法全兼容 mysql,也没有必要的,业务系统一般用到的 sql 没有那么复杂,满足业务系统就够了,比如 tpcc 的 mysql 代码能在 qinsql 上面跑通了就行了。

目前只能定位到 hive 查询 SHOW FULL TABLES FROM MYSQL LIKE 'VERSION'; 返回为空, 但从public 可以查到表。 mysql不区分schema和database, 这个还是需要特殊处理下的吧。

我是java 菜鸟,还搞不懂hive 怎么debug,还不知道怎么修改hive 得查询语句。

mysql> SHOW FULL TABLES FROM MYSQL LIKE 'VERSION';
Empty set (2.52 sec)

mysql> SHOW FULL TABLES FROM PUBLIC LIKE 'VERSION';
+------------+--------------+
| table_name | table_schema |
+------------+--------------+
| version | public |
+------------+--------------+
1 row in set (3.64 sec)

mysql模式里貌似不能新建database?

在 lealone 的数据库对象模型里,schema 是 database 的子级,而 mysql 里 schema 和 database 是同义词,没有必要为了兼容 mysql 而改变 lealone 的设计。如果为了兼容 mysql 改变设计,那 postgresql 和 h2 的用户怎么办?postgresql 和 h2 的 schema 都是 database 的子级。

mysql 这种设计才是最糟糕的,你问为什么不能在 mysql 模式里创建 database?既然 schema 和 database 是平级了,为什么还要在 schema 里创建 database?

你在 mysql.sql 文件的最开头加上
create schema mysql;
use mysql;
这样后面创建的表都放到 mysql 这个 schema 了

终于把表建到了mysql schema了。 现在还是报找不到version这个表, 目前根据debug log和datanucleus代码,怀疑是大小写引起的问题, mysql默认 对表名大小写敏感, lealone默认不敏感。 有配置让lealone返回大写的表名吗?
https://github.com/datanucleus/datanucleus-rdbms/blob/ce662bce540c2853ab27ec483ca24086df055cd5/src/main/java/org/datanucleus/store/rdbms/schema/RDBMSSchemaHandler.java#L433

image

你想灵活转换查询结果的大小写,为什么不用 select 语句呢?非得用 show tables,然后还得提供一个参数让你配置大小写转换。mysql 搞一堆 show 语句本身就是一种垃圾设计,没有必要非得将就它。

GHSDJ 9{S$ALQD`PC}K$Z8L

mysql 本身默认就不区分大小写。

MO73E9VKY7YF48@BB~1HK_N

用 mysql-connector-java 访问 qinsql 的结果本身就跟 mysql 5.7 返回的一样。

mysql 插件的开发先搁置一段时间,这一块不是重心,我还有很多更重要的事要做。

datanucleus有个参数可以指定用lowercase, 加了之后可以拿到表信息,但hive里不支持这个参数。。。有时间我去给hive提个PR试试

<property name="datanucleus.identifier.case" value="lowercase"/>

现在BINARY 还会报错, 我去提个PR试试

CREATE TABLE INVENTORIES ( INVENTORY_NAME VARCHAR(100) BINARY NOT NULL, CONSTRAINT INVENTORIES_PK PRIMARY KEY (INVENTORY_NAME))