Справочная информация:ODBC Сбой вызова - случайные ошибки переполнения даты после перехода из 32-битного ODBC 5.1 на 64-битную 5,3
- Наследство код работает в MS Access 2003.
- SQLs ведении CurrentDb в Access.
- В настоящее время работает на Windows 7 32-разрядной машине.
- Подключение к MySQL Server 5.5 через драйвер ODBC 5.1.
Проблема:
- Попытка перенести на сервер Windows, 2012 64 бит.
- ODBC 5.3 Драйвер Unicode (32 бит).
- Не хотите использовать время, переписывая все, так как есть много кода, и он удастся удалить в удаленном будущем.
Издание:
- Несколько SQL заявления сбой при работе на новых серверах. Работал на старых серверах.
- Все неудачные sqls имеют теперь() в инструкции.
- Описание ошибки говорит, что вызов ODBC завершился неудачно. Хотя более подробное описание говорит о переполнении даты - «[MySQL] [ODBC 5.3 (w) Драйвер] [mysqlid-5.5.28-log] Переполнение даты».
- Случается случайным образом, и когда это происходит, и Access останавливается, обычно можно просто продолжить, и sql будет работать. Он терпит неудачу менее чем в 1% случаев (тысяч).
- Единственные даты в sql указаны в предложении where: "и fieldA> now()", где fieldA - столбец datetime. Это запрос sql sql. Другая ошибка во время вставки такая же, но где целое число вычиталось из теперь() перед сравнением с datetime.
Я не понимаю, почему он говорит о переполнении даты, когда не существует причины, по которой время или время или «сейчас» должно быть удалено? А так как поле datetime уже находится в базе данных, и теперь() будет получать текущую дату и время, не должно быть никаких недопустимых дат?
Любая помощь в том, что может быть проблемой или как отлаживать/регистрировать все, что может помочь, будет высоко оценено.
Поворот трассировки в драйвере ODBC не является вариантом, потому что это происходит случайным образом, так много трафика, поэтому это замедлит все, что ничего не произойдет.
Обратите внимание, что я также столкнулся с одним sql, где сообщение об ошибке переполнения даты было правильным. Похоже, что до 5.3 при вставке даты и времени в поле даты он автоматически усекался, потому что sql, который был успешным 3000 раз, начал сбой. Поэтому этот sql был исправлен путем извлечения даты из поля в первую очередь. Но другие ошибки должны быть чем-то другим.