Any news? Gary
On Thu, Jun 2, 2022 at 12:32 PM Gary Gregory <garydgreg...@gmail.com> wrote: > > BTW, if that still does not work for you, make sure your are using the latest > version of DBCP and of your JDBC Driver. Please report which versions you are > using. If you are still stuck, the only way we can realistically help you > here is if you provide a PR with a reproducible test case using the H2 in > memory database, see the existing tests for inspiration. If you cannot > reproduce the issue, then this might be specific to your database of JDBC > driver, in which case, we would still need a standalone application that > reproduces the issue. > > Gary > > On Thu, Jun 2, 2022, 08:22 Gary Gregory <garydgreg...@gmail.com> wrote: >> >> It might be simpler to avoid custom Java code. Is there a reason you are not >> using the log4j2-jdbc-dbcp2 module? >> >> For example >> https://github.com/apache/logging-log4j2/blob/release-2.x/log4j-jdbc-dbcp2/src/test/resources/log4j2-jdbc-dbcp2.xml >> >> Gary >> >> On Thu, Jun 2, 2022, 08:13 Sébastien Jachym >> <sebastien.jac...@agri-commerce.fr> wrote: >>> >>> I'm logging with log4j2 >>> >>> log4j2.xml : >>> <Configuration> >>> <Appenders> >>> <JDBC name="MySQLDatabase2" tableName="log4j2"> >>> <ConnectionFactory class="my.ConnectionFactory" >>> method="getConnection" /> >>> ... >>> <AsyncRoot level="trace"> >>> <AppenderRef ref="MySQLDatabase2" /> >>> >>> ConnectionFactory class : >>> public static Connection getConnection() throws SQLException { >>> dataSource = new org.apache.commons.dbcp2.BasicDataSource(); >>> dataSource.setUp ( url, user, pass, driver ) >>> >>> dataSource.setDefaultAutoCommit(false); >>> dataSource.setAutoCommitOnReturn(false); >>> dataSource.setRollbackOnReturn(false); >>> dataSource.setValidationQuery("SELECT 1"); >>> >>> // Connection connection = dataSource.getConnection(); >>> // connection.setAutoCommit(true); // no change, first is SET >>> autocommit=(0|1) and log4j2 next is SET autocommit=0 >>> // return connection; >>> return dataSource.getConnection(); >>> >>> In code call : >>> org.apache.logging.log4j.Logger.trace("hello") >>> >>> Finally calling logger, >>> use JDBC Appender >>> and get a connection from the BasicDataSource pool. >>> And continu outside my code with the unwanted transactional statement. >>> For writing log in my database. >>> >>> -----Message d'origine----- >>> De : Gary Gregory <garydgreg...@gmail.com> >>> Envoyé : jeudi 2 juin 2022 11:23 >>> À : Commons Users List <user@commons.apache.org> >>> Objet : Re: DBCP Database Connection Pools without transactionnal NO >>> autocommit >>> >>> Something is not clear to me: are you in control of calling JDBC or are you >>> using Log4j's JDBC Appender or something else? You description is not >>> detailed enough for me to understand who does what. >>> >>> Gary >>> >>> On Wed, Jun 1, 2022, 19:49 Sébastien Jachym < >>> sebastien.jac...@agri-commerce.fr> wrote: >>> >>> > Hello, >>> > Thank you Gary for you reply, but it doesn’t work with configuring >>> > BasicDataSource with : >>> > dataSource.setDefaultAutoCommit(false); >>> > dataSource.setAutoCommitOnReturn(false); >>> > dataSource.setRollbackOnReturn(false); >>> > >>> > There are changes, but always transactional with "SET autocommit" : >>> > SELECT @@session.transaction_isolation SELECT 1 -- ValidationQuery >>> > dans ConnectionFactory SET autocommit=0 SET SQL_SELECT_LIMIT=1 select >>> > >>> > date,logger,level,message,exception,pid,idUtilisateur,version,ip,marke >>> > rSimpleName,sqlLastInsertId,sqlTimeMillis >>> > from log4j2 where 1=0 >>> > SET SQL_SELECT_LIMIT=DEFAULT >>> > insert into log4j2 >>> > >>> > (date,logger,level,message,exception,pid,idUtilisateur,version,ip,mark >>> > erSimpleName,sqlLastInsertId,sqlTimeMillis) >>> > values (... the values ...) >>> > commit >>> > >>> > Also before returning the connection to my log4j2 Async Appenders >>> > whith ConnectionFactory, I force : connection.setAutoCommit(false); >>> > But result is same with transactional statements : >>> > SET autocommit=0 -- [ OR "SET autocommit=0" WITH >>> > connection.setAutoCommit(true); ] SET autocommit=0 SET >>> > SQL_SELECT_LIMIT=1 select >>> > >>> > date,logger,level,message,exception,pid,idUtilisateur,version,ip,marke >>> > rSimpleName,sqlLastInsertId,sqlTimeMillis >>> > from log4j2 where 1=0 >>> > SET SQL_SELECT_LIMIT=DEFAULT >>> > insert into log4j2 >>> > >>> > (date,logger,level,message,exception,pid,idUtilisateur,version,ip,mark >>> > erSimpleName,sqlLastInsertId,sqlTimeMillis) >>> > values ... >>> > commit >>> > >>> > Cheers. >>> > >>> > >>> > -----Message d'origine----- >>> > De : Gary Gregory <garydgreg...@gmail.com> Envoyé : mercredi 1 juin >>> > 2022 14:57 À : Commons Users List <user@commons.apache.org> Objet : >>> > Re: DBCP Database Connection Pools without transactionnal NO >>> > autocommit >>> > >>> > Hello, >>> > >>> > Try calling Connection#setAutoCommit(false) once you get a Connection. >>> > You'll likely want to configure your data source with >>> > org.apache.commons.dbcp2.BasicDataSource.setAutoCommitOnReturn(false) >>> > to avoid resetting the auto-commit flag. >>> > >>> > Gary >>> > >>> > On Tue, May 31, 2022 at 7:46 PM Sébastien Jachym >>> > <sebastien.jac...@agri-commerce.fr> wrote: >>> > > >>> > > Hy, is a way to fully disabled transactional (autocommit) statement >>> > > in DBCP ? >>> > > >>> > > >>> > > >>> > > Using Database Connection Pools with >>> > > org.apache.commons.dbcp2.BasicDataSource give me statements : >>> > > >>> > > >>> > > >>> > > SET autocommit=1 >>> > > >>> > > SET autocommit=0 >>> > > >>> > > SET SQL_SELECT_LIMIT=1 >>> > > >>> > > select >>> > > date,logger,level,message,exception,pid,idUtilisateur,version,ip,mar >>> > > ke rSimpleName,sqlLastInsertId,sqlTimeMillis >>> > > from log4j2 where 1=0 >>> > > >>> > > SET SQL_SELECT_LIMIT=DEFAULT >>> > > >>> > > insert into log4j2 >>> > > (date,logger,level,message,exception,pid,idUtilisateur,version,ip,ma >>> > > rk >>> > > erSimpleName,sqlLastInsertId,sqlTimeMillis) >>> > > values >>> > > ('2022-06-01','timertask','TRACE','WaitInitService','','45964','123',' >>> > > null','','','','0') >>> > > >>> > > commit >>> > > >>> > > rollback >>> > > >>> > > SET autocommit=1 >>> > > >>> > > >>> > > >>> > > But it's for MySQL MyISAM table, and I didn't need transactions, I >>> > > whish only : >>> > > >>> > > >>> > > >>> > > select >>> > > date,logger,level,message,exception,pid,idUtilisateur,version,ip,mar >>> > > ke rSimpleName,sqlLastInsertId,sqlTimeMillis >>> > > from log4j2 where 1=0 >>> > > >>> > > SET SQL_SELECT_LIMIT=DEFAULT >>> > > >>> > > insert into log4j2 >>> > > (date,logger,level,message,exception,pid,idUtilisateur,version,ip,ma >>> > > rk >>> > > erSimpleName,sqlLastInsertId,sqlTimeMillis) >>> > > values >>> > > ('2022-06-01','timertask','TRACE','WaitInitService','','45964','123',' >>> > > null','','','','0') >>> > > >>> > > >>> > > >>> > > Thanks for you replys. >>> > >>> > --------------------------------------------------------------------- >>> > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org >>> > For additional commands, e-mail: user-h...@commons.apache.org >>> > >>> > --------------------------------------------------------------------- >>> > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org >>> > For additional commands, e-mail: user-h...@commons.apache.org >>> > >>> > >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org >>> For additional commands, e-mail: user-h...@commons.apache.org >>> --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@commons.apache.org For additional commands, e-mail: user-h...@commons.apache.org