这种情况要如何配置?
原提问者GitHub用户zdsiyan
DruidDataSourceFactory是阿里巴巴开源的一个数据库连接池组件,支持多种数据库类型,包括MySQL。在使用DruidDataSourceFactory时,如果使用JNDI配置,可能会出现不支持MySQL的allowMultiQueries参数的问题。
allowMultiQueries是MySQL JDBC驱动程序的一个参数,用于指定是否允许在单个SQL语句中执行多个查询。在使用JNDI配置DruidDataSourceFactory时,如果设置了allowMultiQueries参数,可能会导致配置无法正确加载。
解决这个问题的方法是,不要在DruidDataSourceFactory的JNDI配置中使用allowMultiQueries参数。可以通过其他方式来设置这个参数,例如在应用程序代码中手动设置或者在MySQL的配置文件中设置。
如果您使用的是Druid连接池,并且想要通过JNDI配置来连接MySQL数据库,但发现无法设置allowMultiQueries属性,那么您可以尝试以下两种解决方案:
jdbc:mysql://localhost:3306/mydb?allowMultiQueries=true
这将允许在单个查询中执行多个SQL语句。
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属性。
请注意,以上解决方案可能需要根据您的具体环境和要求进行适当修改。
问题已修复,请用新版本 https://github.com/alibaba/druid/releases/tag/1.1.14
原回答者GitHub用户wenshao
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。