|
Внешние источники данных. Узнать ID добавленной записи | ☑ | ||
---|---|---|---|---|
0
Stim
27.05.15
✎
14:43
|
Подключена БД на MySQL.
Добавляю запись: //1. Занести запись в SITE OPER_ID = MAX_ID; SITENAME = Транскрипция(OPERNAME); Стр = "INSERT INTO `SITE` (OPER_ID, SITENAME) VALUES("+OPER_ID+", "+SITENAME+")"; Попытка Соединение.Execute(Стр); Исключение //Сообщить("Что то пошло не так :( "); сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Добавление отрабатывает без проблем. Теперь хочу получить ID добавленной записи: Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | SITE.ID |ИЗ | ВнешнийИсточникДанных.Биллинг.Таблица.SITE КАК SITE |ГДЕ | SITE.SITENAME = &SITENAME |И SITE.OPER_ID = &OPER_ID"; запрос.УстановитьПараметр("SITENAME",SITENAME); запрос.УстановитьПараметр("OPER_ID",OPER_ID); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ID_SITE = Выборка.ID; КонецЕсли; Ошибка: Ошибка выполнения запроса по причине: Ошибка внешней базы данных: ошибка при выполнении запроса по причине: Ошибка ODBC. SQLSTATE: 42000 Номер ошибки: 1064 Описание: [MySQL][ODBC 5.1 Driver][mysqld-5.1.69-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"OPER_ID" = 252)' at line 4 почему так? Поле OPER_ID - числовое. |
|||
1
ЧеловекДуши
27.05.15
✎
14:47
|
(0) ID и OPER_ID , как то разные поля, нет? :)
|
|||
2
Fragster
гуру
27.05.15
✎
14:49
|
а почему добавляешь через ADO, а получаешь через ВИД?
|
|||
3
ЧеловекДуши
27.05.15
✎
14:50
|
А вообще, SQL запросы лучше отладить на SQL сервере. А не из 1С.
|
|||
4
Stim
27.05.15
✎
14:50
|
(2) потому что через ВИД нельзя добавить.
или можно? |
|||
5
Stim
27.05.15
✎
14:50
|
(1)разные. читай внимательнее код
|
|||
6
eklmn
гуру
27.05.15
✎
14:51
|
лучше все-таки посылать запрос скуля..
|
|||
7
Fragster
гуру
27.05.15
✎
14:52
|
(4) или можно, начиная с 8.3.что-то
|
|||
8
Fragster
гуру
27.05.15
✎
14:53
|
а вообще - в описании ВИД точно правильно тип указан? и в параметрах подклчения тип СУБД?
|
|||
9
ЧеловекДуши
27.05.15
✎
14:56
|
(5) Ага Увидел. Ты надеялся, что при добавлении записи, ИД ему присвоить автоматом.
|
|||
10
Stim
27.05.15
✎
14:56
|
(7) ну не важно как добавлять.
даже простой код: Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | SITE.ID |ИЗ | ВнешнийИсточникДанных.Биллинг.Таблица.SITE КАК SITE |ГДЕ | SITE.OPER_ID = &OPER_ID"; запрос.УстановитьПараметр("OPER_ID",252); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ID_SITE = Выборка.ID; КонецЕсли; выдает ошибку |
|||
11
Fragster
гуру
27.05.15
✎
14:57
|
(9) ты не поверишь, но как раз это норма.
|
|||
12
ЧеловекДуши
27.05.15
✎
14:57
|
(10) А на том сервере, где вертится эта БД, такой запрос тоже ошибку выдает?
Я имею ввиду, такой же, но преобразованный в SQL-T |
|||
13
Stim
27.05.15
✎
14:59
|
(8) в описании OPER_ID - число(10,0)
|
|||
14
sapphire
27.05.15
✎
14:59
|
(0) Так тебе и надо, Паша, MySQL не твоё. Почитал бы чаво нить.
|
|||
15
ЧеловекДуши
27.05.15
✎
14:59
|
И еще, в Запросе ты передаешь значения "OPER_ID". И какого оно типа?
|
|||
16
sapphire
27.05.15
✎
15:00
|
(13) И с чего вдруг оно должно автоматом присваивается?
Где уверенность, что поле автоинкрементальное? |
|||
17
sapphire
27.05.15
✎
15:01
|
Биллинг на мускуле, это, конечно, жесть :)
|
|||
18
Stim
27.05.15
✎
15:02
|
(16) присваивается, автоинкрементальное
|
|||
19
Stim
27.05.15
✎
15:02
|
(15) см 13
|
|||
20
Fragster
гуру
27.05.15
✎
15:02
|
(17) а что? до пары сотен тысяч абонентов - взлетит без проблем. не надо просто покупать шаред хостинг за 100 рублей для него, а купить дедик за 3к
|
|||
21
Fragster
гуру
27.05.15
✎
15:03
|
(13) а тип СУБД прописан в подключении?
|
|||
22
sapphire
27.05.15
✎
15:04
|
Для того, что бы нормально отрабатывал внешний источник на мускуле... Я бы.. Но, это же я, а не Паша.
Прилинковал бы мускул к скулю. и там уже исвращался. |
|||
23
Asmody
27.05.15
✎
15:06
|
SELECT LAST_INSERT_ID()
|
|||
24
sapphire
27.05.15
✎
15:08
|
(20) Та речь-то не о том.
Бог с ним, мс мускулом и его форками,кому нравится пусть юзает. Но, Павлик решил, что робята из 1С такие светлоголовые, что переварят любой диалект СУБД, лично я в этом не уверен, и (0) тому подтверждение. |
|||
25
sapphire
27.05.15
✎
15:08
|
(23) Это, Вить, еще знать надоть.
|
|||
26
Stim
27.05.15
✎
15:09
|
(21) да. сейчас передобавил таблицу SITE с типом СУБД MySQL
|
|||
27
Asmody
27.05.15
✎
15:10
|
(25) Так это гуглится на раз. 7.5 из 10 "веб-программистов" регулярно задают этот вопрос.
|
|||
28
Stim
27.05.15
✎
15:10
|
(23) не взлетит. Нужен ID добавленной записи, а не последней.
мб между добавлением и чтением еще с 10 записей добавится |
|||
29
sapphire
27.05.15
✎
15:11
|
(27) Павлика в гугле забанели, наверное:)
На дубовом или 330 спрашивал - ему не ответили - решил клоунаду здесь продолжить. |
|||
30
Stim
27.05.15
✎
15:11
|
+26 все равно выдает ошибку.
если искать по SITENAME (строка), то находит без проблем. А по числовому полю выдает ошибку |
|||
31
Stim
27.05.15
✎
15:11
|
(29) Пожалуйста, не флуди
|
|||
32
sapphire
27.05.15
✎
15:13
|
(31) Ты бы почитал что-нибудь про диалект MySQL
|
|||
33
Stim
27.05.15
✎
15:18
|
запрос
Запрос = новый запрос; Запрос.Текст = "ВЫБРАТЬ | SITE.ID |ИЗ | ВнешнийИсточникДанных.Биллинг.Таблица.SITE КАК SITE |ГДЕ | SITE.ID = &ID"; запрос.УстановитьПараметр("ID","14"); выполняется без ошибок. Единственное отличие ID от OPER_ID в том, что у OPER_ID стоит признак "разрешить NULL" |
|||
34
Stim
27.05.15
✎
15:18
|
+
запрос.УстановитьПараметр("ID",14); отрабатывает так же |
|||
35
НЕА123
27.05.15
✎
15:19
|
(33)+
символ "_" |
|||
36
sapphire
27.05.15
✎
15:25
|
выложи результат
SHOW COLUMNS FROM SITE |
|||
37
Stim
27.05.15
✎
15:27
|
(35) а что не так с символом _ ?
|
|||
38
Stim
27.05.15
✎
15:30
|
(36)
команда Select all Statement: SELECT `SITE`.`ID`, `SITE`.`SITENAME`, `SITE`.`rate_t`, `SITE`.`rate_o`, `SITE`.`OPER_ID`, `SITE`.`roum_rate_s`, `SITE`.`roum_rate_b`, `SITE`.`client_rate`, `SITE`.`rate_inet`, `SITE`.`rate_inet_o`, `SITE`.`rate_inet_t`, `SITE`.`hunt_mode`, `SITE`.`disc_rate_o`, `SITE`.`disc_rate_t`, `SITE`.`disc_roum_rate_s`, `SITE`.`disc_roum_rate_b`, `SITE`.`disc_client_rate`, `SITE`.`disc_inet_t`, `SITE`.`disc_inet_o`, `SITE`.`serve_rate_o`, `SITE`.`serve_roum_rate_s`, `SITE`.`serve_inet_t`, `SITE`.`serve_inet_o`, `SITE`.`serve_client_rate`, `SITE`.`serve_rate_t`, `SITE`.`serve_roum_rate_b`, `SITE`.`RGRP_ID_O`, `SITE`.`RGRP_DENY_ID_O`, `SITE`.`RGRP_ID_T`, `SITE`.`RGRP_DENY_ID_T` FROM `voip`.`SITE`; |
|||
39
sapphire
27.05.15
✎
15:30
|
(37) Тип в мускуле у поля OPER_ID?
|
|||
40
sapphire
27.05.15
✎
15:31
|
(38) Тяжелый случай.
|
|||
41
Ёпрст
27.05.15
✎
15:32
|
хз че там за синтекс, так катит ?
where `SITE`.`OPER_ID`=252 |
|||
42
Stim
27.05.15
✎
15:33
|
(39) Int(11)
|
|||
43
sapphire
27.05.15
✎
15:33
|
https://dev.mysql.com/doc/refman/5.7/en/show-columns.html
SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr] SHOW COLUMNS displays information about the columns in a given table. It also works for views. The LIKE clause, if present, indicates which column names to match. The WHERE clause can be given to select rows using more general conditions, as discussed in Section 20.31, “Extensions to SHOW Statements”. SHOW COLUMNS displays information only for those columns for which you have some privilege. |
|||
44
sapphire
27.05.15
✎
15:34
|
(41) Это одинце так транслирует
|
|||
45
Fragster
гуру
27.05.15
✎
15:34
|
короче, гугли, в каком релизе 1с была исправлена ошибка 10103123 (SW672486) Поле внешнего источника данных MySQL, содержащее знак подчеркивания в имени
|
|||
46
НЕА123
27.05.15
✎
15:35
|
(37)
может нормально. но у меня были проблемы именно с этим символом в идентификаторах в запросах (когда, в какой СУБД - не помню) . |
|||
47
sapphire
27.05.15
✎
15:36
|
(45) Я б прилинковал мускул к сакле и не парился
|
|||
48
Stim
27.05.15
✎
15:38
|
(45)
10103123 (SW672486) Поле внешнего источника данных MySQL, содержащее знак подчеркивания в имени Проблема: При обращении к полю внешнего источника данных MySQL, содержащему в имени знак подчеркивания, происходит ошибка Ошибка выполнения запроса по причине: Ошибка внешней базы данных: ошибка при выполнении запроса по причине: Ошибка ODBC. SQLSTATE: 42000 Номер ошибки: 1064 Описание: [MySQL][ODBC 5.1 Driver][mysqld-5.0.51a-24+lenny5-log] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"partner_id" Дата публикации: 2012-06-14 |
|||
49
Барматолог
27.05.15
✎
15:39
|
Нахер бы они усгались эти внешние источники. Толку от них, как с козла молока.
|
|||
50
Stim
27.05.15
✎
15:40
|
интересное решение
http://catalog.mista.ru/public/176787/ |
|||
51
sapphire
27.05.15
✎
15:41
|
||||
52
sapphire
27.05.15
✎
15:41
|
(49) +1
|
|||
53
Stim
27.05.15
✎
15:42
|
Дата публикации:
2012-06-14 у меня платформа этого года. неужели они за 3 года не исправили эту ошибку? |
|||
54
sapphire
27.05.15
✎
15:45
|
(53) Говорят, что в 8.3.1.531 исправлено см (51)
|
|||
55
НЕА123
27.05.15
✎
15:47
|
(49)
динамический список внешнего источника мне нравится. |
|||
56
Stim
27.05.15
✎
15:50
|
(54) Значит, не исправлено.
или ошибка в другом |
|||
57
Ёпрст
27.05.15
✎
15:56
|
А экранировать кавычками или еще как нельзя этот "_" ?
|
|||
58
sapphire
27.05.15
✎
15:59
|
(57) говорят, можно, см (50)
|
|||
59
sapphire
27.05.15
✎
15:59
|
(56) Да поставь МС СКЛ Экспресс присоедени к нему мускул и не мучайся
|
|||
60
Барматолог
27.05.15
✎
16:15
|
(55) Он часто применяется?
|
|||
61
Барматолог
27.05.15
✎
16:16
|
(58) мысль годная, но похоже у него вебка на мускуле висит
|
|||
62
Fragster
гуру
27.05.15
✎
16:16
|
там в комментах хороший способ - создать вьюху без "_". И не надо ничего устанавливать, линковать
|
|||
63
Барматолог
27.05.15
✎
16:16
|
(59) сорри, не дочитал)
|
|||
64
Stim
27.05.15
✎
17:04
|
(62) это как?
|
|||
65
Fragster
гуру
27.05.15
✎
17:26
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |