Нужна помощь для IBatis?

Я использую IBatis для своего приложения. Я использую версию IBatis 1.6.1. Я думал, что она может обрабатывать все операции, связанные с подключениями к БД. Но я немного беспокоюсь об этом сейчас. Иногда я получаю следующие сведения об ошибке в свой файл журнала,

Сообщение Невозможно открыть соединение с "MySQL, провайдером MySQL 5.0.8.1". Исходный стек IBatisNet.DataMapper в IBatisNet.DataMapper.SqlMapSession.OpenConnection(String connectionString) в IBatisNet.DataMapper.SqlMapSession.OpenConnection() в IBatisNet.DataMapper.Commands.DbCommandDecorator.System.Data.IDbCommand.ExecuteReader() в IBatisNet.DataMapper. MappedStatements.MappedStatement.RunQueryForObject (запрос RequestScope, сеанс ISqlMapSession, Object parameterObject, Object resultObject) at IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject (сеанс ISqlMapSession, Object parameterObject, Object resultObject) at IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteForObject) session, Object parameterObject) в IBatisNet.DataMapper.SqlMapper.QueryForObject(строковое имя_оператора, Object parameterObject) в Sunya.VideoStreaming.Persistence.SchoolRepository.GetSchoolDetailsByUrl(String SchoolUrl) в D:\SVN\Sprint104\Persistence\SchoolRepository.cs:строка 192 в EduVisionBasePage.GetSchoolUrl(School&_school) a t ASP.global_asax.Application_BeginRequest(отправитель объекта, EventArgs e) в System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() в System.Web.HttpApplication.ExecuteStep(шаг IExecutionStep, логическое значение и завершено синхронно) Message Too много подключений Источник MySql.Data Stack в MySql.Data.MySqlClient.MySqlStream.OpenPacket() в MySql.Data.MySqlClient.NativeDriver.Authenticate411() в MySql.Data.MySqlClient.NativeDriver.Authenticate() в MySql.Data.MySqlClient. NativeDriver.Open() в MySql.Data.MySqlClient.MySqlPool.GetPooledConnection() в MySql.Data.MySqlClient.MySqlPool.GetConnection() в MySql.Data.MySqlClient.MySqlConnection.Open() в IBatisNet.DataMapper.SqlMapSession.OpenConnection( Строка ConnectionString)

Кто-нибудь имеет представление об ошибке?


person Ramesh    schedule 14.11.2009    source источник


Ответы (2)


iBATIS существует довольно давно (2001 г.), и я сомневаюсь, что в провайдер MySQL. Вы упомянули, что ошибка возникает "иногда" - если она прерывистая, возможно, проблема в другом. «Невозможно открыть соединение», скорее всего, означает именно это. Сетевые ошибки, сбои в работе базы данных, слишком много незавершенных подключений, проблемы с аутентификацией и т. д. могут вызвать эту ошибку.

person TrueWill    schedule 14.11.2009

Если вы используете диспетчер транзакций JDBC, установите для источника данных значение «UNPOOLED» в файле myBatisConfig.xml.

<transactionManager type="JDBC"/> <dataSource type="UNPOOLED"> . . . </dataSource> </environment>

Это короткий ответ. Моя догадка: класс пула соединений слишком долго удерживает соединения. Понижение значений для «poolMaximunActiveConnection» и «poolMaximunIdleConnections» может решить проблему.

Примечания: использование myBatis 3.0.3 Java, mySql Windows 5.5.9

условия поиска: iBatis, myBatis, «Слишком много подключений», mySQL

person fishjd    schedule 21.04.2011