tidb 集成 flyway 报错 denied to user for table global_variables

报错内容:

Caused by: java.sql.SQLException: connection disabled
    at com.alibaba.druid.pool.DruidPooledConnection.checkStateInternal(DruidPooledConnection.java:1181)
    at com.alibaba.druid.pool.DruidPooledConnection.checkState(DruidPooledConnection.java:1166)
    at com.alibaba.druid.pool.DruidPooledConnection.getMetaData(DruidPooledConnection.java:887)
    at org.flywaydb.core.internal.jdbc.JdbcUtils.getDatabaseMetaData(JdbcUtils.java:146)
    ... 57 common frames omitted
Caused by: java.sql.SQLSyntaxErrorException: SELECT command denied to user 'iot_customer'@'%' for table 'global_variables'
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:121)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:972)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3225)
    at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:459)
    at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3222)
    at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeQuery(PreparedStatementProxyImpl.java:166)
    at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:213)
    at org.flywaydb.core.internal.jdbc.JdbcTemplate.queryForString(JdbcTemplate.java:191)
    at org.flywaydb.core.internal.database.mysql.MySQLDatabase.isRunningInPerconaXtraDBClusterWithStrictMode(MySQLDatabase.java:66)
    at org.flywaydb.core.internal.database.mysql.MySQLDatabase.<init>(MySQLDatabase.java:61)
    at org.flywaydb.core.internal.database.DatabaseFactory.createDatabase(DatabaseFactory.java:159)
    at org.flywaydb.core.internal.database.DatabaseFactory.createDatabase(DatabaseFactory.java:92)
    at org.flywaydb.core.Flyway.execute(Flyway.java:1655)
 

这个错误产生的原因是 使用 flyway 5.2.1 , tidb 数据, 其中有一个查询

select VARIABLE_VALUE from performance_schema.global_variables where variable_name = 'pxc_strict_mode';

这个查询, performance_schema.global_variables 并不存在这个表, 所以报错

解决办法只能是tidb暂时用不了flyway, 或者升级到其它版本试试, 但是 jdk1.8只有flyway 5.2.X系列

经过测试, 授权后,可以通过, 这里面注意要大写, 刚开始的时候, 我使用小写, 也不报错, 但是不起作用, 换成大写就好了

grant SELECT on INFORMATION_SCHEMA.* to 'iot_customer'@'%';
grant SELECT on PERFORMANCE_SCHEMA.* to 'iot_customer'@'%';
flush privileges;

相关推荐

  1. spring boot集成flyway快速入门demo

    2024-01-06 04:14:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-06 04:14:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-06 04:14:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-06 04:14:02       82 阅读
  4. Python语言-面向对象

    2024-01-06 04:14:02       91 阅读

热门阅读

  1. 我的Spring Cloud学习之旅:原因、过程和收获

    2024-01-06 04:14:02       62 阅读
  2. Ubuntu安装和配置ssh教程

    2024-01-06 04:14:02       58 阅读
  3. c# Avalonia 绘图

    2024-01-06 04:14:02       54 阅读
  4. Flutter中的StatelessWidget和StatefulWidget简介与使用

    2024-01-06 04:14:02       68 阅读
  5. 2024阿里云服务器配置推荐方案

    2024-01-06 04:14:02       70 阅读
  6. 【leetcode100-028】【链表】两数相加

    2024-01-06 04:14:02       59 阅读
  7. LeetCode_2_中等_两数相加

    2024-01-06 04:14:02       53 阅读
  8. python中多线程的使用

    2024-01-06 04:14:02       51 阅读