2016-02-16 24 views

cevap

2

Bir MysqlDataSource veya MysqlConnectionPoolDataSource kullanırsanız, rewriteBatchedStatements özelliğini ayarlamalısınız (veya setRewriteBatchedStatements(boolean)

numaralı telefonu arayın.

((com.mysql.jdbc.ConnectionProperties) connection).setRewriteBatchedStatements(true); 

Not: Sadece bu son seçeneği için MySQL Connector/J kaynaklarına baktım, unutmadım Bir bağlantı elde ettikten sonra

Kullanmak gerekir, zamanında Bunu değiştirmek için test etti.

aşağıdaki kullanabilirsiniz c3p0 için

GÜNCELLEME:

ComboPooledDataSource cpds = ... 
Connection connection = cpds.getConnection(); 
connection.unwrap(com.mysql.jdbc.ConnectionProperties.class).setRewriteBatchedStatements(true); 

c3p0, com.mchange:c3p0:0.9.5.2 olmak com.mchange ile dikkatli olmalıdır - diğer GroupID ile bu kod çalışmaz.

+0

@Cherry Düzenleme için teşekkürler. Tamamen 'unwrap' demeyi unuttum, muhtemelen normal MySQL bağlantısı için ve diğer veri kaynaklarının sarılmış MySQL bağlantıları için çalışacaktır. –

0

Sen Connection.setClientInfo kullanarak bunu yapmak mümkün olmalıdır:

Properties props = new Properties(); 
props.setProperty("user", ...); 
props.setProperty("password", ...); 
props.setProperty("rewriteBatchedStatements", "true"); 
Connection connection = DriverManager.getConnection(url, props); 

: Eğer URL üzerinden yapmak istemiyorsanız, size DriverManager ile Properties nesneyi kullanabilirsiniz

Connection c = ...; 
c.setClientInfo("rewriteBatchedStatements", "true"); 
+0

Bunun işe yaradığından emin misiniz? MySQL Connector/J kaynak koduna hızlıca baktım, ancak setClientInfo sadece geçerli bağlantı hakkında sunucu tarafındaki bilgileri ayarlıyor gibi görünüyor. –

İlgili konular