开发者社区> 问答> 正文

DruidDataSourceFactory用jndi配置时不支持mysql的allowMultiQ

这种情况要如何配置?

原提问者GitHub用户zdsiyan

展开
收起
山海行 2023-07-05 21:31:46 59 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    DruidDataSourceFactory是阿里巴巴开源的一个数据库连接池组件,支持多种数据库类型,包括MySQL。在使用DruidDataSourceFactory时,如果使用JNDI配置,可能会出现不支持MySQL的allowMultiQueries参数的问题。

    allowMultiQueries是MySQL JDBC驱动程序的一个参数,用于指定是否允许在单个SQL语句中执行多个查询。在使用JNDI配置DruidDataSourceFactory时,如果设置了allowMultiQueries参数,可能会导致配置无法正确加载。

    解决这个问题的方法是,不要在DruidDataSourceFactory的JNDI配置中使用allowMultiQueries参数。可以通过其他方式来设置这个参数,例如在应用程序代码中手动设置或者在MySQL的配置文件中设置。

    2023-07-30 09:36:22
    赞同 展开评论 打赏
  • 值得去的地方都没有捷径

    如果您使用的是Druid连接池,并且想要通过JNDI配置来连接MySQL数据库,但发现无法设置allowMultiQueries属性,那么您可以尝试以下两种解决方案:

    1. 使用Druid的URL配置方式:在JNDI配置中,将URL属性设置为完整的JDBC连接字符串,包括allowMultiQueries属性。例如:
    jdbc:mysql://localhost:3306/mydb?allowMultiQueries=true
    

    这将允许在单个查询中执行多个SQL语句。

    1. 自定义DataSource配置:如果JNDI配置无法满足您的需求,您可以考虑使用自定义的DataSource配置。您可以创建一个类,实现javax.sql.DataSource接口,并根据您的需求在该类中配置DruidDataSource的属性。例如:
    import com.alibaba.druid.pool.DruidDataSource;
    import javax.naming.*;
    import javax.sql.DataSource;
    
    public class CustomDataSource implements DataSource {
    
        private DruidDataSource dataSource;
    
        public CustomDataSource() {
            dataSource = new DruidDataSource();
            // 设置其他属性
            dataSource.setUrl("jdbc:mysql://localhost:3306/mydb?allowMultiQueries=true");
            // ...
        }
    
        @Override
        public Connection getConnection() throws SQLException {
            return dataSource.getConnection();
        }
    
        // 实现其他接口方法...
    
        // 将自定义DataSource绑定到JNDI
        public static void bindToJndi(String jndiName) throws NamingException {
            Context context = new InitialContext();
            context.rebind(jndiName, new CustomDataSource());
        }
    }
    

    然后,您可以在您的应用程序中将自定义的DataSource绑定到JNDI,如下所示:

    CustomDataSource.bindToJndi("jdbc/myDataSource");
    

    这样,您就可以通过"jdbc/myDataSource"来访问您的自定义DataSource,并且在其中设置了allowMultiQueries属性。

    请注意,以上解决方案可能需要根据您的具体环境和要求进行适当修改。

    2023-07-11 19:15:31
    赞同 展开评论 打赏
  • 问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14

    原回答者GitHub用户wenshao

    2023-07-06 12:14:16
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像