Внешние источники данных запись через 1с #786736


#0 by Dunstan
Ситуация: Есть простая таблица в MуSQL, где ключевым уникальным полем является строковое представление уникального идентификатора строка из 36 символов типа "e6e12e11-022a-11e6-85df-00e018f3c64a". При записи встроенными средствами 1С дает ошибку: //****************** Ошибка внешней базы данных: ошибка при выполнении запроса по причине: Ошибка ODBC. SQLSTATE: HY000 Номер ошибки: 1292 Описание: [MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16-log]Truncated incorrect INTEGER value: '435a5350-bbc1-11e6-8269-00ff75dfd0db' //****************** 1. Подозрительно что пишет не строку а число INTEGER. 2. В аналогичную таблицу но с другим сервером MySQL (5.6) пишет, но значение как-бы преобразует в число. Может у кого есть мысли за эту тему?
#1 by Heckfy
Надо бы тип проверить на SQL.....
#2 by Cool_Profi
Мыслей много. Но главная - использовать нормальные средства для записи в SQL...
#3 by Dunstan
Такая же табличка и ее запись на MS SQL идет на ура. Т.е. все тоже самое но сервер MS SQL/
#4 by Garykom
Truncated incorrect INTEGER value: '435a5350-bbc1-11e6-8269-00ff75dfd0db' что нибудь намекает?
#5 by Garykom
+ ну оно никак не лезет в   даже обрезать не вышло говорит ))
#6 by Dunstan
Нормальные это какие? А реализация записи в 8.3.5 типа "создать" не то. Когда просто сохраняешь уже существующий элемент все ОК.
#7 by Garykom
Кста мускул со строковыми id длинными (куда засунули гуид) отвратно работает, по этому пришлось в свое время перейти на постгрес
#8 by Garykom
И да строка вида '435a5350-bbc1-11e6-8269-00ff75dfd0db' это просто строковое представление огромадного целого числа из 128 бит
#9 by Dunstan
Запись должна идти в символьное поле, а не в цифровое. Почему поля понимается как числовое, а не как символьное?
#10 by Garykom
А ты преобразовал из УИД (1Сного) в строку то?
#11 by Dunstan
нет взял с мускула UUID
#12 by Garykom
#13 by Dunstan
Если записываю через встроенную функцию мускула то все ок.
#14 by Dunstan
не понял юмора
#15 by Garykom
кодировки то совпадают?
#16 by Garykom
#17 by Garykom
+ В MySQL UUID можно хранить в полях различного типа, например: 1) Текстовый формат char. Тут всё просто – какую строку получаем, такую и заносим в таблицу. 2) Бинарный формат binary. Из UUID удаляются тире и всё это нужно обернуть функцией UNHEX.
#18 by Garykom
#19 by Dunstan
Ну можно и так сделать. Но вот вопрос почему строку то как строку в базу не пишет? Больше к 1с вопрос. Что за функцию он генерит при записи нового?
#20 by Dunstan
Может в строку соединения что-то надо прописать или как то описание таблицы дополнить?
#21 by Dunstan
С использованием UNHEX(REPLACE(UUID, '-', '')) все заработало! Спс всем за все!
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С