Ошибка транзакции Nhibernate при переходе на MySQL из mssql - PullRequest
0 голосов
/ 21 июля 2011

Первоначально я использовал Nhibernate с MSSQL (2008), и все работало отлично. У меня было веб-приложение, которое связывало сеанс для каждого запроса и упаковывало каждую единицу работы в транзакцию. Транзакции были введены через AOP и пользовательский атрибут, поэтому все с требуемым атрибутом будет заключено в транзакцию, которая либо завершилась фиксацией, либо откатом.

Опять же, просто чтобы уточнить, что все хорошо работает в MSSQL, и с помощью Nhibernate Profiler я вижу, что все транзакции происходят, как и ожидалось.

Теперь я только что добавил поддержку Mysql (5.1) (поскольку в одной среде используется база данных Mysql), я настроил все таблицы как InnoDB, и структуры таблиц идентичны, поэтому я немного озадачен, почему я получить следующую ошибку:

Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect): [SomeRandomEntity#1]Could not synchronize database state with session

При проверке на профилировщике Nhibernate он начинает транзакцию, запускает вызов обновления, а затем выполняет бомбардировку с ошибкой, тогда как в действительности он должен быть зафиксирован в этот момент.

Если это помогает, SQL запускается при обновлении (имена изменены):

UPDATE
     some_table SET some_column_1 = 1230697028 /* ?p0 */,
     some_column_2 = '2011-07-21T10:58:59.00' /* ?p1 */ 
WHERE some_column_3 = 1 /* ?p2 */

Стоит также отметить, что я не использую какой-либо уровень изоляции в своих транзакциях, я не был уверен, какой из них будет лучшим для моей настройки, и Mssql не жаловался, когда я его не устанавливал.

Кто-нибудь видел подобные проблемы раньше, так как на данный момент это остановка шоу: (

=== Редактировать ===

Если это поможет, вот моя строка подключения:

<connectionStrings>
    <add name="NHibernateConnection" connectionString="Server=localhost;Database=xxxxx;Uid=root;" providerName="System.Data.SqlClient"/>
  </connectionStrings>

1 Ответ

0 голосов
/ 25 июля 2011

Кажется, проблема была в шаткой колонке, которая не вставлялась куда-то еще, что останавливало обновление. Хотя ошибка была не совсем ясна в отношении основной проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...