|
Запрос к внешнему источнику | ☑ | ||
---|---|---|---|---|
0
AnisaL
23.12.13
✎
08:37
|
ДОброе утро!
Пытаюсь сделать запрос к внешнему источнику -базе данных биллинга. Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 20 | payment.pid, | payment.db, | payment.prid, | payment.lm |ИЗ | ВнешнийИсточникДанных.Freedom.Таблица.payment КАК payment |ГДЕ | payment.pid В(&pid)"; |
|||
1
AnisaL
23.12.13
✎
08:38
|
(0) + Запрос.УстановитьПараметр("pid", pid);
|
|||
2
MKZM
23.12.13
✎
08:38
|
И?
|
|||
3
AnisaL
23.12.13
✎
08:38
|
(1) pid - массив чисел
|
|||
4
MKZM
23.12.13
✎
08:39
|
А дальше?
|
|||
5
AnisaL
23.12.13
✎
08:39
|
(2) Выдает ошибку
{Обработка.ЗагрузкаДанныхИзБиллинга.Форма.Форма.Форма(4006)}: Ошибка при вызове метода контекста (Выполнить) РезультатЗапроса = Запрос.Выполнить(); по причине: Ошибка выполнения запроса по причине: Ошибка внешней базы данных: ошибка при выполнении запроса по причине: Ошибка ODBC. SQLSTATE: HY000 Номер ошибки: 1044 Описание: [MySQL][ODBC 5.2(a) Driver][mysqld-5.5.31-55-log]Access denied for user '1c'@'ляляля' to database 'freedom' |
|||
6
MKZM
23.12.13
✎
08:39
|
Понедельник, однако.
|
|||
7
MKZM
23.12.13
✎
08:40
|
В MySQL есть "ВЫБРАТЬ ПЕРВЫЕ 20? Прости давно с ним работал, забыл.
|
|||
8
х86
23.12.13
✎
08:40
|
(5)>>Access denied for user
а от нас то что ? |
|||
9
AnisaL
23.12.13
✎
08:41
|
(6) самое интересное, что когда ставлю в запрос одно число, то он срабатывает :
Запрос.УстановитьПараметр("pid", pid[0]); |
|||
10
MKZM
23.12.13
✎
08:41
|
Access denied for user '1c'@'ляляля' to database 'freedom'
|
|||
11
AnisaL
23.12.13
✎
08:41
|
(8) дело не в этом, тут ошибка в запросе
|
|||
12
AnisaL
23.12.13
✎
08:42
|
(11) + или же вообще условие убираю, то запрос срабатывает.. А про доступ, я уже проверяла - доступ открыт
|
|||
13
AnisaL
23.12.13
✎
08:43
|
(7) да есть - там пишется LIMIT 20
|
|||
14
Defender aka LINN
23.12.13
✎
08:44
|
(5) рукалицо...
|
|||
15
MKZM
23.12.13
✎
08:47
|
Ошибка: 1044 SQLSTATE: 42000 (ER_DBACCESS_DENIED_ERROR)
Сообщение: Для пользователя '%s'@'%s' доступ к базе данных '%s' закрыт |
|||
16
AnisaL
23.12.13
✎
08:49
|
(15) я подходила к сисадмину - он проверил - доступ открыт на селект
|
|||
17
Defender aka LINN
23.12.13
✎
08:51
|
(16) Ну пусть он это громко и четко скажет в монитор тогда, а то СУБД с ним не согласна
|
|||
18
х86
23.12.13
✎
08:52
|
(16)значит криво настроил
|
|||
19
MKZM
23.12.13
✎
08:52
|
(17) ))
|
|||
20
AnisaL
23.12.13
✎
09:01
|
(18) подошла еще раз - сказал что еще раз посмотрит
|
|||
21
AnisaL
23.12.13
✎
09:10
|
(20) вообщем он мне дал полные права и запрос сработал!
|
|||
22
AnisaL
23.12.13
✎
09:21
|
(21) + а теперь он переживает.что дал полные права, боится что я там с базой что-ниб наделаю.. так если через внешний источник подключаться, то я никак не смогу ведь там с данными ничего сделать кроме как прочесть их через select, ведь так?
|
|||
23
х86
23.12.13
✎
09:31
|
(22)через адо коннект сможешь всё грохнуть
|
|||
24
MKZM
23.12.13
✎
09:37
|
(22) Если боится, пусть настроит как надо.
|
|||
25
AnisaL
23.12.13
✎
10:21
|
(23) понятно, значит через внешний источник безопасно
|
|||
26
Wobland
23.12.13
✎
10:29
|
(25) читай про адо, delete и update. докажи админу, что он был прав
|
|||
27
Kerk
23.12.13
✎
10:47
|
(26) Надо круче! Вот справка:
Формат запроса: DROP {DATABASE | SCHEMA} [IF NOT EXISTS] database_name В запросе используются обязательные параметры: DATABASE - указывает на то что будет удалена база данных. SCHEMA - синоним параметра DATABASE database_name - название удаляемой базы данных В запросе используются необязательные параметры: IF NOT EXISTS - указывает что удаление базы данных следует производить только в том случае если база существует. Если попытаться удалить несуществующую базу данных без параметра IF NOT EXISTS, то результатом выполнения запроса будет ошибка (подробнее в разделе коды ошибок в MySQL). Пример: DROP DATABASE hosting_provider Данный запрос удалит базу данных hosting_provider. Если база данных hosting_provider не существует то результатом выполнения будет ошибка Can't drop database 'hosting_provider'; database doesn't exist. |
|||
28
Wobland
23.12.13
✎
10:51
|
отлично! по ветке "постоянно удаляется база" узнаем, кто у ней админ
|
|||
29
х86
23.12.13
✎
10:52
|
(18)+ скорее всего нет доступа к к.л. служебным таблицам (темп диби или еще что-то), хз как оно там устроено в майскуле
поэтому просто запрос выполняется, а топ 20 в отказ уходит |
|||
30
AnisaL
23.12.13
✎
10:59
|
(29) немного не так: запрос выполняется и без топ 20, а вот не выполняется когда условие стоит что pid в массиве значений, причем запрос- то у меня сработал, но он оказался пустой..массив значений не потянул - он слишком большой - 242
значения.. потом я сделала запрос в цикле - сначала в массив pid попадают числа от 1 до 50 (их получается порядка 40), потом от 51 до 100 и т.д. |
|||
31
МихаилМ
23.12.13
✎
11:03
|
пусть админ даст право на создание ВТ
либо на доступ к tempdb, если в mysql есть аналог |
|||
32
Trotter
23.12.13
✎
11:06
|
А так будет работать ?)
Запрос.УстановитьПараметр("pid", pid[]); |
|||
33
AnisaL
23.12.13
✎
11:07
|
(31) вряд ли он знает как такое можно настроить
|
|||
34
х86
23.12.13
✎
11:09
|
(33)тогда ждем (28) )
|
|||
35
AnisaL
23.12.13
✎
11:12
|
(34) ну вообще-то я кроме селекта к внешнему источнику никаких операций не делаю..никаких там alter, drop
|
|||
36
Wobland
23.12.13
✎
11:19
|
(35) а платформа тебе не даст, тут более другая магия потребна
|
|||
37
Kerk
23.12.13
✎
11:23
|
(35) Интересно, у тебя MySQL понимает запросы с "ИЗ" и "ГДЕ"?
Если не секрет, можно код процедуры с запросом к MySQL... |
|||
38
МихаилМ
23.12.13
✎
11:30
|
(37)
это 1с объект "внешний источник данных" |
|||
39
Wobland
23.12.13
✎
11:39
|
(37) там платформа толмачит
|
|||
40
AnisaL
23.12.13
✎
12:02
|
(32) так ругается
{Обработка.ЗагрузкаДанныхИзБиллинга.Форма.Форма.Форма(4013,39)}: Ожидается выражение Запрос.УстановитьПараметр("pid", pid[<<?>>]); (Проверка: Тонкий клиент) |
|||
41
Wobland
23.12.13
✎
12:06
|
(40) всё правильно. я бы тоже ожидал
|
|||
42
Kerk
23.12.13
✎
12:13
|
(41) :) "Ожидайте..., прог думает".
А массив в строку не кошерно? |
|||
43
AnisaL
23.12.13
✎
12:15
|
(42) какая функция?
|
|||
44
AnisaL
23.12.13
✎
12:26
|
(43) + и что это даст?
|
|||
45
Kerk
23.12.13
✎
12:29
|
(44) Сами же писали (9), может проблема в массиве? Может он не передается во "ВнешнийИсточникДанных"...
|
|||
46
AnisaL
23.12.13
✎
12:40
|
(45) по моим данным проблема не в массиве как таковом, а в количестве в нем элементов, если их количество превышает какое-то значение, то запрос выдает пустоту
|
|||
47
AnisaL
23.12.13
✎
12:44
|
(45) ну и если поместить массив в строку, то получится 1,3,5,17,19,20,21,...221 Потом как ты в нем будешь искать подобие?
|
|||
48
Kerk
23.12.13
✎
12:49
|
(47) "payment.pid В(&pid)"
Пардон, где тут "Подобно"? Да и ещё вопросик... Зачем "ВЫБРАТЬ ПЕРВЫЕ 20", если в запросе нет сортировки? |
|||
49
AnisaL
23.12.13
✎
12:52
|
(48) ну потому что ищется значение в массиве, а если ты предлагаешь массив преобразовать в строку, то как ты будешь в ней искать это значение? первые 20 - это можно смело убрать, я загружала платежи для отладки, чтобы все не грузить
|
|||
50
Серго62
23.12.13
✎
12:58
|
(49) ну фиг знает как это в my sql работает, в ms sql вот такое условие Field in ('1,2,3,4,5,6') замечательно работает, даже если Field имеет числовой тип...
|
|||
51
Trotter
23.12.13
✎
12:58
|
А если зациклить переменную и забабахивать её вот Запрос.УстановитьПараметр("pid", pid[сюды]);
будет получатся Запрос.УстановитьПараметр("pid", pid[0]); Запрос.УстановитьПараметр("pid", pid[1]); Запрос.УстановитьПараметр("pid", pid[2]); потом в эту переменную записывать полученное числи и это число складировать куда нито ?) Потом обнулять переменную и потом записывать в неё число(номер) прохода цикла и останавливать пока переменная попадаемая в [] не станет равна null?) |
|||
52
Kerk
23.12.13
✎
12:59
|
(49)
Из справки: <Выражение> [НЕ] В [ИЕРАРХИИ] ( <Список значений> | <Массив значений> ) | P.S. от меня... Список значений может выглядеть так "1,3,5" и так найдутся элементы справочника с кодами равными "1" и "3" и "5". |
|||
53
Kerk
26.12.13
✎
11:10
|
ТС после корпоратива в интернет не пускают :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |