Error Connecting to Proxysql

Hi all.

I’m having an issue querying my MariaDB database through ProxySQL
When I add the proxysql as a MySQL database in Metabase it appears to add successfully. Though it doesn’t appear to successfully sync the tables. Additionally when I try a simple select query it errors with this error after a few seconds:

Unknown system variable ‘transaction_isolation’

When I connect the same DB directly to Metabase the tables sync and the queries work as intended.

Metabase Version: v0.36.3
MariaDB Version: 10.2.14-MariaDB-log
ProxySQL Version: 2.0.14-70-g7b02b19

Full Stacktrace from the query:
:started_at #t “2020-09-23T20:20:37.360292Z[UTC]”,
:via
[{:status :failed,
:class java.sql.SQLException,
:error “(conn=3226) Unknown system variable ‘transaction_isolation’”,
:stacktrace
[“org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.get(ExceptionMapper.java:262)”
“org.mariadb.jdbc.internal.util.exceptions.ExceptionMapper.getException(ExceptionMapper.java:164)”
“org.mariadb.jdbc.MariaDbStatement.executeExceptionEpilogue(MariaDbStatement.java:258)”
“org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:349)”
“org.mariadb.jdbc.MariaDbStatement.executeQuery(MariaDbStatement.java:595)”
“org.mariadb.jdbc.MariaDbConnection.getTransactionIsolation(MariaDbConnection.java:868)”
“com.mchange.v2.c3p0.impl.NewPooledConnection.(NewPooledConnection.java:120)”
“com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:181)”
“com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:147)”
“com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:202)”
“com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176)”
“com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163)”
“com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)”
“com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908)”
“com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)”
nil],
:state “HY000”}
{:status :failed,
:class com.mchange.v2.resourcepool.CannotAcquireResourceException,
:error “A ResourcePool could not acquire a resource from its primary factory or source.”,
:stacktrace
[“com.mchange.v2.resourcepool.BasicResourcePool.awaitAvailable(BasicResourcePool.java:1507)”
“com.mchange.v2.resourcepool.BasicResourcePool.prelimCheckoutResource(BasicResourcePool.java:644)”
“com.mchange.v2.resourcepool.BasicResourcePool.checkoutResource(BasicResourcePool.java:554)”
“com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutAndMarkConnectionInUse(C3P0PooledConnectionPool.java:758)”
“com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:685)”
“com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)”
“–> driver.sql_jdbc.execute$fn__72421.invokeStatic(execute.clj:157)”
“driver.sql_jdbc.execute$fn__72421.invoke(execute.clj:155)”
“driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:386)”
“driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:377)”
“driver.sql_jdbc$fn__73846.invokeStatic(sql_jdbc.clj:49)”
“driver.sql_jdbc$fn__73846.invoke(sql_jdbc.clj:47)”
“query_processor.context$executef.invokeStatic(context.clj:59)”
“query_processor.context$executef.invoke(context.clj:48)”
“query_processor.context.default$default_runf.invokeStatic(default.clj:69)”
“query_processor.context.default$default_runf.invoke(default.clj:67)”
“query_processor.context$runf.invokeStatic(context.clj:45)”
“query_processor.context$runf.invoke(context.clj:39)”
“query_processor.reducible$pivot.invokeStatic(reducible.clj:34)”
“query_processor.reducible$pivot.invoke(reducible.clj:31)”
“query_processor.middleware.mbql_to_native$mbql__GT_native$fn__45532.invoke(mbql_to_native.clj:26)”
“query_processor.middleware.check_features$check_features$fn__44834.invoke(check_features.clj:42)”
“query_processor.middleware.optimize_datetime_filters$optimize_datetime_filters$fn__45697.invoke(optimize_datetime_filters.clj:133)”
“query_processor.middleware.wrap_value_literals$wrap_value_literals$fn__47225.invoke(wrap_value_literals.clj:137)”
“query_processor.middleware.annotate$add_column_info$fn__43455.invoke(annotate.clj:574)”
“query_processor.middleware.permissions$check_query_permissions$fn__44709.invoke(permissions.clj:64)”
“query_processor.middleware.pre_alias_aggregations$pre_alias_aggregations$fn__46215.invoke(pre_alias_aggregations.clj:40)”
“query_processor.middleware.cumulative_aggregations$handle_cumulative_aggregations$fn__44907.invoke(cumulative_aggregations.clj:61)”
“query_processor.middleware.resolve_joins$resolve_joins$fn__46747.invoke(resolve_joins.clj:183)”
“query_processor.middleware.add_implicit_joins$add_implicit_joins$fn__39185.invoke(add_implicit_joins.clj:245)”
“query_processor.middleware.limit$limit$fn__45518.invoke(limit.clj:38)”
“query_processor.middleware.format_rows$format_rows$fn__45499.invoke(format_rows.clj:81)”
“query_processor.middleware.desugar$desugar$fn__44973.invoke(desugar.clj:22)”
“query_processor.middleware.binning$update_binning_strategy$fn__43999.invoke(binning.clj:229)”
“query_processor.middleware.resolve_fields$resolve_fields$fn__44515.invoke(resolve_fields.clj:24)”
“query_processor.middleware.add_dimension_projections$add_remapping$fn__38734.invoke(add_dimension_projections.clj:270)”
“query_processor.middleware.add_implicit_clauses$add_implicit_clauses$fn__38941.invoke(add_implicit_clauses.clj:141)”
“query_processor.middleware.add_source_metadata$add_source_metadata_for_source_queries$fn__39334.invoke(add_source_metadata.clj:105)”
“query_processor.middleware.reconcile_breakout_and_order_by_bucketing$reconcile_breakout_and_order_by_bucketing$fn__46412.invoke(reconcile_breakout_and_order_by_bucketing.clj:98)”
“query_processor.middleware.auto_bucket_datetimes$auto_bucket_datetimes$fn__43640.invoke(auto_bucket_datetimes.clj:125)”
“query_processor.middleware.resolve_source_table$resolve_source_tables$fn__44562.invoke(resolve_source_table.clj:46)”
“query_processor.middleware.parameters$substitute_parameters$fn__46197.invoke(parameters.clj:114)”
“query_processor.middleware.resolve_referenced$resolve_referenced_card_resources$fn__44614.invoke(resolve_referenced.clj:80)”
“query_processor.middleware.expand_macros$expand_macros$fn__45229.invoke(expand_macros.clj:158)”
“query_processor.middleware.add_timezone_info$add_timezone_info$fn__39365.invoke(add_timezone_info.clj:15)”
“query_processor.middleware.splice_params_in_response$splice_params_in_response$fn__47109.invoke(splice_params_in_response.clj:32)”
“query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__46423$fn__46427.invoke(resolve_database_and_driver.clj:33)”
“driver$do_with_driver.invokeStatic(driver.clj:61)”
“driver$do_with_driver.invoke(driver.clj:57)”
“query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__46423.invoke(resolve_database_and_driver.clj:27)”
“query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__45447.invoke(fetch_source_query.clj:267)”
“query_processor.middleware.store$initialize_store$fn__47118$fn__47119.invoke(store.clj:11)”
“query_processor.store$do_with_store.invokeStatic(store.clj:46)”
“query_processor.store$do_with_store.invoke(store.clj:40)”
“query_processor.middleware.store$initialize_store$fn__47118.invoke(store.clj:10)”
“query_processor.middleware.cache$maybe_return_cached_results$fn__44491.invoke(cache.clj:209)”
“query_processor.middleware.validate$validate_query$fn__47127.invoke(validate.clj:10)”
“query_processor.middleware.normalize_query$normalize$fn__45545.invoke(normalize_query.clj:22)”
“query_processor.middleware.add_rows_truncated$add_rows_truncated$fn__39203.invoke(add_rows_truncated.clj:36)”
“query_processor.middleware.results_metadata$record_and_return_metadata_BANG_$fn__47094.invoke(results_metadata.clj:147)”
“query_processor.middleware.constraints$add_default_userland_constraints$fn__44850.invoke(constraints.clj:42)”
“query_processor.middleware.process_userland_query$process_userland_query$fn__46286.invoke(process_userland_query.clj:136)”
“query_processor.middleware.catch_exceptions$catch_exceptions$fn__44793.invoke(catch_exceptions.clj:174)”
“query_processor.reducible$async_qp$qp_STAR___38013$thunk__38014.invoke(reducible.clj:101)”
“query_processor.reducible$async_qp$qp_STAR___38013.invoke(reducible.clj:107)”
“query_processor.reducible$sync_qp$qp_STAR___38022$fn__38025.invoke(reducible.clj:133)”
“query_processor.reducible$sync_qp$qp_STAR___38022.invoke(reducible.clj:132)”
“query_processor$process_userland_query.invokeStatic(query_processor.clj:213)”
“query_processor$process_userland_query.doInvoke(query_processor.clj:209)”
“query_processor$fn__47269$process_query_and_save_execution_BANG___47278$fn__47281.invoke(query_processor.clj:225)”
“query_processor$fn__47269$process_query_and_save_execution_BANG___47278.invoke(query_processor.clj:217)”
“query_processor$fn__47313$process_query_and_save_with_max_results_constraints_BANG___47322$fn__47325.invoke(query_processor.clj:237)”
“query_processor$fn__47313$process_query_and_save_with_max_results_constraints_BANG___47322.invoke(query_processor.clj:230)”
“api.dataset$fn__50604$fn__50607.invoke(dataset.clj:54)”
“query_processor.streaming$streaming_response_STAR_$fn__35435$fn__35436.invoke(streaming.clj:73)”
“query_processor.streaming$streaming_response_STAR_$fn__35435.invoke(streaming.clj:72)”
“async.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:66)”
“async.streaming_response$do_f_STAR_.invoke(streaming_response.clj:64)”
“async.streaming_response$do_f_async$fn__23249.invoke(streaming_response.clj:85)”]}
{:status :failed,
:class java.sql.SQLException,
:error “Connections could not be acquired from the underlying database!”,
:stacktrace
[“com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:118)”
“com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool.checkoutPooledConnection(C3P0PooledConnectionPool.java:692)”
“com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:140)”
“–> driver.sql_jdbc.execute$fn__72421.invokeStatic(execute.clj:157)”
“driver.sql_jdbc.execute$fn__72421.invoke(execute.clj:155)”
“driver.sql_jdbc.execute$execute_reducible_query.invokeStatic(execute.clj:386)”
“driver.sql_jdbc.execute$execute_reducible_query.invoke(execute.clj:377)”
“driver.sql_jdbc$fn__73846.invokeStatic(sql_jdbc.clj:49)”
“driver.sql_jdbc$fn__73846.invoke(sql_jdbc.clj:47)”
“query_processor.context$executef.invokeStatic(context.clj:59)”
“query_processor.context$executef.invoke(context.clj:48)”
“query_processor.context.default$default_runf.invokeStatic(default.clj:69)”
“query_processor.context.default$default_runf.invoke(default.clj:67)”
“query_processor.context$runf.invokeStatic(context.clj:45)”
“query_processor.context$runf.invoke(context.clj:39)”
“query_processor.reducible$pivot.invokeStatic(reducible.clj:34)”
“query_processor.reducible$pivot.invoke(reducible.clj:31)”
“query_processor.middleware.mbql_to_native$mbql__GT_native$fn__45532.invoke(mbql_to_native.clj:26)”
“query_processor.middleware.check_features$check_features$fn__44834.invoke(check_features.clj:42)”
“query_processor.middleware.optimize_datetime_filters$optimize_datetime_filters$fn__45697.invoke(optimize_datetime_filters.clj:133)”
“query_processor.middleware.wrap_value_literals$wrap_value_literals$fn__47225.invoke(wrap_value_literals.clj:137)”
“query_processor.middleware.annotate$add_column_info$fn__43455.invoke(annotate.clj:574)”
“query_processor.middleware.permissions$check_query_permissions$fn__44709.invoke(permissions.clj:64)”
“query_processor.middleware.pre_alias_aggregations$pre_alias_aggregations$fn__46215.invoke(pre_alias_aggregations.clj:40)”
“query_processor.middleware.cumulative_aggregations$handle_cumulative_aggregations$fn__44907.invoke(cumulative_aggregations.clj:61)”
“query_processor.middleware.resolve_joins$resolve_joins$fn__46747.invoke(resolve_joins.clj:183)”
“query_processor.middleware.add_implicit_joins$add_implicit_joins$fn__39185.invoke(add_implicit_joins.clj:245)”
“query_processor.middleware.limit$limit$fn__45518.invoke(limit.clj:38)”
“query_processor.middleware.format_rows$format_rows$fn__45499.invoke(format_rows.clj:81)”
“query_processor.middleware.desugar$desugar$fn__44973.invoke(desugar.clj:22)”
“query_processor.middleware.binning$update_binning_strategy$fn__43999.invoke(binning.clj:229)”
“query_processor.middleware.resolve_fields$resolve_fields$fn__44515.invoke(resolve_fields.clj:24)”
“query_processor.middleware.add_dimension_projections$add_remapping$fn__38734.invoke(add_dimension_projections.clj:270)”
“query_processor.middleware.add_implicit_clauses$add_implicit_clauses$fn__38941.invoke(add_implicit_clauses.clj:141)”
“query_processor.middleware.add_source_metadata$add_source_metadata_for_source_queries$fn__39334.invoke(add_source_metadata.clj:105)”
“query_processor.middleware.reconcile_breakout_and_order_by_bucketing$reconcile_breakout_and_order_by_bucketing$fn__46412.invoke(reconcile_breakout_and_order_by_bucketing.clj:98)”
“query_processor.middleware.auto_bucket_datetimes$auto_bucket_datetimes$fn__43640.invoke(auto_bucket_datetimes.clj:125)”
“query_processor.middleware.resolve_source_table$resolve_source_tables$fn__44562.invoke(resolve_source_table.clj:46)”
“query_processor.middleware.parameters$substitute_parameters$fn__46197.invoke(parameters.clj:114)”
“query_processor.middleware.resolve_referenced$resolve_referenced_card_resources$fn__44614.invoke(resolve_referenced.clj:80)”
“query_processor.middleware.expand_macros$expand_macros$fn__45229.invoke(expand_macros.clj:158)”
“query_processor.middleware.add_timezone_info$add_timezone_info$fn__39365.invoke(add_timezone_info.clj:15)”
“query_processor.middleware.splice_params_in_response$splice_params_in_response$fn__47109.invoke(splice_params_in_response.clj:32)”
“query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__46423$fn__46427.invoke(resolve_database_and_driver.clj:33)”
“driver$do_with_driver.invokeStatic(driver.clj:61)”
“driver$do_with_driver.invoke(driver.clj:57)”
“query_processor.middleware.resolve_database_and_driver$resolve_database_and_driver$fn__46423.invoke(resolve_database_and_driver.clj:27)”
“query_processor.middleware.fetch_source_query$resolve_card_id_source_tables$fn__45447.invoke(fetch_source_query.clj:267)”
“query_processor.middleware.store$initialize_store$fn__47118$fn__47119.invoke(store.clj:11)”
“query_processor.store$do_with_store.invokeStatic(store.clj:46)”
“query_processor.store$do_with_store.invoke(store.clj:40)”
“query_processor.middleware.store$initialize_store$fn__47118.invoke(store.clj:10)”
“query_processor.middleware.cache$maybe_return_cached_results$fn__44491.invoke(cache.clj:209)”
“query_processor.middleware.validate$validate_query$fn__47127.invoke(validate.clj:10)”
“query_processor.middleware.normalize_query$normalize$fn__45545.invoke(normalize_query.clj:22)”
“query_processor.middleware.add_rows_truncated$add_rows_truncated$fn__39203.invoke(add_rows_truncated.clj:36)”
“query_processor.middleware.results_metadata$record_and_return_metadata_BANG_$fn__47094.invoke(results_metadata.clj:147)”
“query_processor.middleware.constraints$add_default_userland_constraints$fn__44850.invoke(constraints.clj:42)”
“query_processor.middleware.process_userland_query$process_userland_query$fn__46286.invoke(process_userland_query.clj:136)”
“query_processor.middleware.catch_exceptions$catch_exceptions$fn__44793.invoke(catch_exceptions.clj:174)”
“query_processor.reducible$async_qp$qp_STAR___38013$thunk__38014.invoke(reducible.clj:101)”
“query_processor.reducible$async_qp$qp_STAR___38013.invoke(reducible.clj:107)”
“query_processor.reducible$sync_qp$qp_STAR___38022$fn__38025.invoke(reducible.clj:133)”
“query_processor.reducible$sync_qp$qp_STAR___38022.invoke(reducible.clj:132)”
“query_processor$process_userland_query.invokeStatic(query_processor.clj:213)”
“query_processor$process_userland_query.doInvoke(query_processor.clj:209)”
“query_processor$fn__47269$process_query_and_save_execution_BANG___47278$fn__47281.invoke(query_processor.clj:225)”
“query_processor$fn__47269$process_query_and_save_execution_BANG___47278.invoke(query_processor.clj:217)”
“query_processor$fn__47313$process_query_and_save_with_max_results_constraints_BANG___47322$fn__47325.invoke(query_processor.clj:237)”
“query_processor$fn__47313$process_query_and_save_with_max_results_constraints_BANG___47322.invoke(query_processor.clj:230)”
“api.dataset$fn__50604$fn__50607.invoke(dataset.clj:54)”
“query_processor.streaming$streaming_response_STAR_$fn__35435$fn__35436.invoke(streaming.clj:73)”
“query_processor.streaming$streaming_response_STAR_$fn__35435.invoke(streaming.clj:72)”
“async.streaming_response$do_f_STAR_.invokeStatic(streaming_response.clj:66)”
“async.streaming_response$do_f_STAR_.invoke(streaming_response.clj:64)”
“async.streaming_response$do_f_async$fn__23249.invoke(streaming_response.clj:85)”],
:state nil}],
:state “HY000”,
:json_query {:type “native”, :native {:query “select * from example_tbl limit 10”, :template-tags {}}, :database 3, :parameters [], :middleware {:add-default-userland-constraints? true}},
:status :failed,
:class java.sql.SQLException,
:stacktrace
[“org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readErrorPacket(AbstractQueryProtocol.java:1599)”
“org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.readPacket(AbstractQueryProtocol.java:1461)”
“org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.getResult(AbstractQueryProtocol.java:1424)”
“org.mariadb.jdbc.internal.protocol.AbstractQueryProtocol.executeQuery(AbstractQueryProtocol.java:178)”
“org.mariadb.jdbc.MariaDbStatement.executeInternal(MariaDbStatement.java:343)”
“org.mariadb.jdbc.MariaDbStatement.executeQuery(MariaDbStatement.java:595)”
“org.mariadb.jdbc.MariaDbConnection.getTransactionIsolation(MariaDbConnection.java:868)”
“com.mchange.v2.c3p0.impl.NewPooledConnection.(NewPooledConnection.java:120)”
“com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:181)”
“com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:147)”
“com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:202)”
“com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1176)”
“com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1163)”
“com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)”
“com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1908)”
“com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)”
nil],
:context :ad-hoc,
:error “Unknown system variable ‘transaction_isolation’”,
:row_count 0,
:running_time 0,
:data {:rows [], :cols []}}

Thanks for any help you can provide. Let me know if there’s any more details I can add.

Hi @Ldav
Latest release is 0.36.6, so I would recommend that you try with that.
It looks like there’s an issue open about it on ProxySQL: https://github.com/sysown/proxysql/issues/3017
You might be able to block specific query involving transaction_isolation or rename it to tx_isolation

Hi @flamber
I’ve upgraded to v0.36.6 but the error still persists.
I’m not setting that variable anywhere manually. If I connect directly through proxysql to the DB I can query just fine. I wonder is there a way to change/disable that variable from within metabase?
I’ve tried using some Additional JDBC connection arguments, but with no positive results.

@Ldav Metabase is setting that variable. You would need to build your own version of Metabase if you don’t want those variables set.
https://github.com/metabase/metabase/issues/13254