powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / 32 января, или где искать проблему!!!
14 сообщений из 14, страница 1 из 1
32 января, или где искать проблему!!!
    #34660851
RuslanAdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

При обновлении поля таблицы получаю шокирующую ошибку:

SQL Error (-1206): Invalid day in date

32 января???

Запрос вот такой:

update table1 set date1 = (select date1 from table2 where table1.RecID = table2.RecID)
where year(date1) < 1960

Первая мысль - щелкает триггер таблицы table1 и формирует при этом некорректную дату. Триггер удалил для верности. Ошибка осталась. Второе предположение - в таблице table2 поле date1 имеет неверный формат изначально. Но как? Тип данных DATE.

Поиски запросами кривых дат с днем, который не соответствует месяцу, в обеих таблицах дают отрицательный результат.

В обеих таблицах поле date1 имеет тип DATE not NULL

Как быть? Уже сбился с ног. Где искать проблему?

Сервер: IBM Informix Dynamic Server Version 9.40.UC3
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34660931
АнатоЛой
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте всё-таки найти строку, вызывающую ошибку, при помощи наложения допфильтров типа
Код: plaintext
and date(date1) >  1900 
или
Код: plaintext
and <pk_field> between  120  and  2312 
...
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34661000
RuslanAdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Беда в том, что обе таблицы я выгрузил в файл, а потом залил их в MSSQL. Все записи легли чудно. Ни одна запись не браковалась из-за неверного формата даты.
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34661010
RuslanAdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще парадокс! dbexport и последующий dbimport отработали без ошибок.
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34661101
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обновите информикс - в ветке 9.4 есть и более новые
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34661134
RuslanAdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну что же! Попробую развернуть базу не триальной десятке, скажем.
Но если возникают такие вопросы, поневоле стремишься найти ответ. Даже если заработает на десятке, то до истины докопаться в любом случае хочется.
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34661196
Алексан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuslanAdmБеда в том, что обе таблицы я выгрузил в файл, а потом залил их в MSSQL. Все записи легли чудно. Ни одна запись не браковалась из-за неверного формата даты.Это наводит на мысль, что данные в таблицах правильные, а некорректность возникает во время выполнения запроса. Можно попробовать собрать дополнительную информацию, сохранив новую дату в дополнительном - целочисленном - столбце, а не модифицируя существующий столбец. Кроме того, локализована ли база данных и каким именно образом выполняется запрос (в смысле локализации клиента)? Что известно про переменные, заведующие датами (DBDATE, GL_DATE, etc.)?
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34661352
RuslanAdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Переменные:

DBDATE=DMY4/
DBTIME='%y - %m - %d %H:%M:%S'


GL_DATE - не задана

Локаль ru_RU.866
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34661689
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы все таки доп условиями, например через rowid, постарался бы вычислить конкретную строк с данными.
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34662330
Boya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В самом крайнем случае можно прокрутить по всем записям цикл и через обработчик ошибок получить rowid строки в которой неправильная дата.
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34664817
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RuslanAdmПеременные:
DBDATE=DMY4/
DBTIME='%y - %m - %d %H:%M:%S'
GL_DATE - не задана
Локаль ru_RU.866
Эти параметры были при выгрузке или загрузке БД ?
Или на клиенте при выполнении запросов ? Откуда вы их взяли ?
Странноватый формат разделителя для русской локали.
И в стандарте и в жизни используется . (точка).
Я не очень понял из предыдущего, при чем тут MS SQL, но загрузка данных туда без ошибок, также как и загрузка dbimport-ом, вовсе не обозначает, что данные (даты) легли именно такие, какие нужно. Например, вы могли ошибиться с форматом даты при загрузке или выгрузке (т.е. просто не указать его) и будет использоваться формат по умолчанию для этой локали (а он у вас сильно не совпадает).
Опять таки, при чем здесь 32 января ? Или это образно ? :)
Скорее всего, 29 февраля не в высокосном году, а год мог получиться неверным по простой причине загрузки двух символов года вместо четырех (получим другое столетие)...
Проверьте параметр DBCENTURY, если он установлен...
Причин может быть много.

Еще один момент.
С такой ситуацией (неверная дата в поле) я все же встречался несколько раз и причины были следующие:
- битый индекс на этой таблице (легко проверяется oncheck -cI -s)
- проблемы в приложении, которое умудрялось как то запихнуть кривые данные в таблицу во время сбоев (отрубалось насильно приложение или сервак)
Но во всех этих случаях сами данные из столбца не читались, т.е. ошибки возникали уже на этапе простого чтения таблицы. А вы говорите, что выгрузка данных таблицы проходит нормально, значит мало похоже на этот случай...
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34669126
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
я бы сначала сделал oncheck -pd потом проверил индексы как указано выше
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34671114
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cprя бы сначала сделал oncheck -pd потом проверил индексы как указано выше
Может все таки oncheck - с d ? Тогда можно и все сразу oncheck -cDI -sqy
...
Рейтинг: 0 / 0
32 января, или где искать проблему!!!
    #34671404
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
vasilis cprя бы сначала сделал oncheck -pd потом проверил индексы как указано выше
Может все таки oncheck - с d ? Тогда можно и все сразу oncheck -cDI -sqy

я бы индексы не чинил, а пересоздавал заново. Вроде бы Informix так рекомендует.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / 32 января, или где искать проблему!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]