Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
Всем добрый день! ASA 7.04 патч 3541 1) Делаю выгрузку базы 2) Создаю новую базу 3) Выполняю скрипт для загрузки в новую При загрузке данных одной из таблиц оператор INPUT INTO выдает ошибку, что загружаемое значение в строке такой-то не проходит по диапазону 5.13273425920143604E-313 Смотрю в выгруженный текстовый dat-файл этой таблицы - все верно, там 5.13273425920143604E-313. Поле double. Минимум что там можно хранить, по документации 2.22507385850721e-308 (0 не в счет) Смотрю в базу(откуда выгружал) там 5.13273425920143604E-313 Это как понимать? Откуда в базе может быть такое значение, если есть указанные ограничения по значениям. Проблема усугубляется, что эти неверные значения выгрузились по нескольким полям и нескольким таблицам. Вручную dat-файлы править, естественно запаришься. Пока единственное что приходит в голову, выдать Update =0.0 на эти поля по этим таблицам перед выгрузкой. Примерно так Update t1 set price=0.0 where price<0.00000000000000001 and price<>0.0 Может кто сталкивался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2006, 14:32 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
Вот те раз!!! При экспериментах над полем double обнаружилось следующее: Таблица t, поле price(double) Если выполнить 1) Update t set price=2.22507385850721e-308 price=2.22507385850721e-308. Все правильно, самое минимальное значение проходит 2) Update t set price=2.22507385850720e-308 price=0.0 Все правильно, меньше минимально возможного значение = 0.0 А вот: 3) Update t set price=0.1/1.79769313486231e+308 price=5.56268464626788E-311. Т.е. меньше минимально возможного значения по базе!!! Отсюда и моя проблемка описанная выше. Тут мне кажется попахивает ошибочкой от Sybase Проверьте кто может у себя в разных версиях. Можно просто: оператор select .01/1.79769313486231e+308 что возвратит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2006, 15:51 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
ASA9 = вернула 0 SA10 = вернула 0 -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2006, 16:13 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
ASCRUSASA9 = вернула 0 SA10 = вернула 0 -- www.rusug.ru - портал русскоязычной группы пользователей Sybase Значит поправили. А я вот сижу думаю. Либо update по полям с double перед выгрузкой Либо dat-файлы править в редакторе. Хорошо что ошибка только в 3 таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2006, 16:46 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
Ужаз. Кто жи price хранит в double ? Это же не average price ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2006, 23:46 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
Похоже на отсутствие нормализации мантисы. Только в этом случае можно выскочить за минимальное значение. Такое иногда наблюдается, если арифметика double реализуется программно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 05:10 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
MasterZivУжаз. Кто жи price хранит в double ? Это же не average price ? Да я понимаю, что price надо обрезать до нужного кол-ва цифр после запятой. Но в данном случае не в этом дело. У меня ведь ошибка не только в колонке price. И вычисления в базе не мои. Меня сам факт смущает. Как может попасть в double число выходящее за пороговые значения по Sybase??? Про идее должно обрезаться всегда либо по максимальному либо по минимальному либо выдавать ошибку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 10:22 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
А что стоит в опциях БД PRECISION и SCALE ? -- www.rusug.ru - портал русскоязычной группы пользователей Sybase ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 11:05 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
ASCRUSА что стоит в опциях БД PRECISION и SCALE ? -- www.rusug.ru - портал русскоязычной группы пользователей Sybase SCALE=12 PRECISION=40 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 11:11 |
|
||
|
Проблемы с double при выгрузке/загрузке базы
|
|||
|---|---|---|---|
|
#18+
Что касается выгрузки/загрузки базы, то проблему победил, выдав update price=0.0 и т.д. на ошибочные записи перед выгрузкой базы. Но проблема осталась. Нельзя гарантировать, что это не повториться. Сейчас проведу анализ кода(клиента и сервера), где эти значения меняются вероятно надо будет дополнительные проверки в вычислениях вставить. Так что кто ASA 7 пользуется, будьте внимательны в этом вопросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2006, 14:13 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33884504&tid=2012663]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 452ms |

| 0 / 0 |
