Вход | Регистрация
 

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

Внешние источники данных запись через 1с
Я
   Dunstan
 
06.12.16 - 17:40
Ситуация:
Есть простая таблица в 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) пишет, но значение как-бы преобразует в число.
Может у кого есть мысли за эту тему?
   Heckfy
 
1 - 06.12.16 - 17:41
Надо бы тип проверить на SQL.....
   Cool_Profi
 
2 - 06.12.16 - 17:42
Мыслей много.
Но главная - использовать нормальные средства для записи в SQL...
   Dunstan
 
3 - 06.12.16 - 17:58
(1) Такая же табличка и ее запись на MS SQL идет на ура.
Т.е. все тоже самое но сервер MS SQL/
   Garykom
 
4 - 06.12.16 - 17:59
Truncated incorrect INTEGER value: '435a5350-bbc1-11e6-8269-00ff75dfd0db'

что нибудь намекает?
   Garykom
 
5 - 06.12.16 - 18:00
(4)+ ну оно никак не лезет в https://dev.mysql.com/doc/refman/5.5/en/integer-types.html  даже обрезать не вышло говорит ))
   Dunstan
 
6 - 06.12.16 - 18:00
(2) Нормальные это какие?
А реализация записи в 8.3.5 типа "создать" не то. Когда просто сохраняешь уже существующий элемент все ОК.
   Garykom
 
7 - 06.12.16 - 18:01
Кста мускул со строковыми id длинными (куда засунули гуид) отвратно работает, по этому пришлось в свое время перейти на постгрес
   Garykom
 
8 - 06.12.16 - 18:03
И да строка вида '435a5350-bbc1-11e6-8269-00ff75dfd0db' это просто строковое представление огромадного целого числа https://ru.wikipedia.org/wiki/GUID из 128 бит
   Dunstan
 
9 - 06.12.16 - 18:03
(4) Запись должна идти в символьное поле, а не в цифровое.
Почему поля понимается как числовое, а не как символьное?
   Garykom
 
10 - 06.12.16 - 18:04
(9) А ты преобразовал из УИД (1Сного) в строку то?
   Dunstan
 
11 - 06.12.16 - 18:06
(9) нет взял с мускула UUID()
   Garykom
 
12 - 06.12.16 - 18:12
   Dunstan
 
13 - 06.12.16 - 18:12
Если записываю через встроенную функцию мускула то все ок.
   Dunstan
 
14 - 06.12.16 - 18:13
(12) не понял юмора
   Garykom
 
15 - 06.12.16 - 18:13
(14) кодировки то совпадают?
   Garykom
 
16 - 06.12.16 - 18:15
   Garykom
 
17 - 06.12.16 - 18:16
(16)+ В MySQL UUID можно хранить в полях различного типа, например:

1) Текстовый формат char(36). Тут всё просто – какую строку получаем, такую и заносим в таблицу.
2) Бинарный формат binary(16). Из UUID удаляются тире и всё это нужно обернуть функцией UNHEX().

1
UNHEX(REPLACE(UUID(), '-', ''))
   Garykom
 
18 - 06.12.16 - 18:16
   Dunstan
 
19 - 06.12.16 - 18:19
(18) Ну можно и так сделать. Но вот вопрос почему строку то как строку в базу не пишет?
Больше к 1с вопрос. Что за функцию он генерит при записи нового?
   Dunstan
 
20 - 06.12.16 - 18:20
(18) Может в строку соединения что-то надо прописать или
как то описание таблицы дополнить?
   Dunstan
 
21 - 06.12.16 - 21:31
С использованием UNHEX(REPLACE(UUID(), '-', ''))
все заработало! Спс всем за все!


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.