Я использую MySQL DB и клиент JDBC Java для доступа к нему.Mysql прочитал данные сразу после написания?
У меня есть таблица, которая содержит информацию о сеансе. Каждый сеанс связан с SessionToken. Этот токен является строкой, закодированной в Base64 для хэша некоторых значений сеанса. Он должен быть уникальным. И определяется как varchar (50) в db.
Когда я пытаюсь для поиска сеанса его маркером я запрос к базе данных, используя SQL заявление, как это:
select SessionId, ClientIP, PersonId, LastAccessTime, SessionCreateTime from InkaSession where SessionToken like 'exK/Xw0imW/qOtN39uw5bddeeMg='
У меня есть UnitTest, который проверяет эту функциональность, и это не подействует, так как запрос делает не возвращать сессию, даже жестко, я только что написал сессию в БД.
Мой тестовый блок выполняет следующие функции:
Create Connection via DriverManager.getConnection
Add a session via Sql Insert query
close the connection
create Connection via DriverManager.getConnection
look for the session via sql select
unit test fails, because nothing found
Когда я пошагово этого UnitTest с отладчиком и скопировать мимо выбора SQL, который собирается быть отправлен в БД в командной MySQL строки, она работает отлично, и я возвращаю сессию.
Я также попытался извлечь более старую сессию из db, попросив более старую сессию SessionToken. Это прекрасно работает. Это только терпит неудачу, если я попрошу SessionToken сразу после того, как я вставил его.
Все соединения находятся на AutoCommit. Тем не менее я попытался установить уровень транзакции на «Read Uncommited». Это тоже не сработало.
Есть ли какие-либо дополнительные предложения?
Да, это в основном то, что я сделал. Кроме того, commit() завершится ошибкой из-за ошибки синтаксиса SQL. Что я нахожу странным. Вместо этого я закрываю() соединение. Во всяком случае, в режиме Autocommit это не обязательно, не так ли? Кроме того, данные остаются в db, поэтому я не думаю, что есть какая-то незавершенная транзакция. Есть ли способ быть уверенным? – Mario
Также попытался отключить AutoCommit и явно зафиксировать. Это работает (т. Е. Commit() больше не вызывает исключение), но не решает проблему. – Mario
Уже есть vrsion 5.1.10 разъема. – Mario