|
Внешние источники данных запись через 1с | ☑ | ||
---|---|---|---|---|
0
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) пишет, но значение как-бы преобразует в число. Может у кого есть мысли за эту тему? |
|||
1
Heckfy
06.12.16
✎
17:41
|
Надо бы тип проверить на SQL.....
|
|||
2
Cool_Profi
06.12.16
✎
17:42
|
Мыслей много.
Но главная - использовать нормальные средства для записи в SQL... |
|||
3
Dunstan
06.12.16
✎
17:58
|
(1) Такая же табличка и ее запись на MS SQL идет на ура.
Т.е. все тоже самое но сервер MS SQL/ |
|||
4
Garykom
гуру
06.12.16
✎
17:59
|
Truncated incorrect INTEGER value: '435a5350-bbc1-11e6-8269-00ff75dfd0db'
что нибудь намекает? |
|||
5
Garykom
гуру
06.12.16
✎
18:00
|
(4)+ ну оно никак не лезет в https://dev.mysql.com/doc/refman/5.5/en/integer-types.html даже обрезать не вышло говорит ))
|
|||
6
Dunstan
06.12.16
✎
18:00
|
(2) Нормальные это какие?
А реализация записи в 8.3.5 типа "создать" не то. Когда просто сохраняешь уже существующий элемент все ОК. |
|||
7
Garykom
гуру
06.12.16
✎
18:01
|
Кста мускул со строковыми id длинными (куда засунули гуид) отвратно работает, по этому пришлось в свое время перейти на постгрес
|
|||
8
Garykom
гуру
06.12.16
✎
18:03
|
И да строка вида '435a5350-bbc1-11e6-8269-00ff75dfd0db' это просто строковое представление огромадного целого числа https://ru.wikipedia.org/wiki/GUID из 128 бит
|
|||
9
Dunstan
06.12.16
✎
18:03
|
(4) Запись должна идти в символьное поле, а не в цифровое.
Почему поля понимается как числовое, а не как символьное? |
|||
10
Garykom
гуру
06.12.16
✎
18:04
|
(9) А ты преобразовал из УИД (1Сного) в строку то?
|
|||
11
Dunstan
06.12.16
✎
18:06
|
(9) нет взял с мускула UUID()
|
|||
12
Garykom
гуру
06.12.16
✎
18:12
|
||||
13
Dunstan
06.12.16
✎
18:12
|
Если записываю через встроенную функцию мускула то все ок.
|
|||
14
Dunstan
06.12.16
✎
18:13
|
(12) не понял юмора
|
|||
15
Garykom
гуру
06.12.16
✎
18:13
|
(14) кодировки то совпадают?
|
|||
16
Garykom
гуру
06.12.16
✎
18:15
|
||||
17
Garykom
гуру
06.12.16
✎
18:16
|
(16)+ В MySQL UUID можно хранить в полях различного типа, например:
1) Текстовый формат char(36). Тут всё просто – какую строку получаем, такую и заносим в таблицу. 2) Бинарный формат binary(16). Из UUID удаляются тире и всё это нужно обернуть функцией UNHEX(). 1 UNHEX(REPLACE(UUID(), '-', '')) |
|||
18
Garykom
гуру
06.12.16
✎
18:16
|
||||
19
Dunstan
06.12.16
✎
18:19
|
(18) Ну можно и так сделать. Но вот вопрос почему строку то как строку в базу не пишет?
Больше к 1с вопрос. Что за функцию он генерит при записи нового? |
|||
20
Dunstan
06.12.16
✎
18:20
|
(18) Может в строку соединения что-то надо прописать или
как то описание таблицы дополнить? |
|||
21
Dunstan
06.12.16
✎
21:31
|
С использованием UNHEX(REPLACE(UUID(), '-', ''))
все заработало! Спс всем за все! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |