Страница 1 из 1
Mapserver + Mysql хранимка
Добавлено: 27 фев 2013, 20:28
AntonAD
В данный момент один из слоев Mapserver рисует на основании данных от MySQL.
Код: Выделить всё
DATA "SELECT id, feature FROM layer WHERE .......", где feature - пространственные данные.
Потребовалось внести достаточно сложную логику в запрос, для чего была написана хранимка, которая отдает данные по запросу. Сама хранимка работает, проверено ручными запросами, однако попытка ее вызова
Код: Выделить всё
DATA "call MyPROCEDURE(unix_timestamp(now()))"
Приводит к
Код: Выделить всё
msOGRFileOpen(): OGR error. GetLayer(call MyPROCEDURE(unix_timestamp(now()))) failed for OGR connection
Возможно вызывать хранимки в данном случае надо как то иначе или проблемы в чем то ином.
Буду благодарен за подсказку.
Re: Mapserver + Mysql хранимка
Добавлено: 03 мар 2013, 15:41
Denis Rykov
Может что-то с правами?
Re: Mapserver + Mysql хранимка
Добавлено: 04 мар 2013, 04:11
AntonAD
Denis Rykov писал(а):Может что-то с правами?
Нет, запускаю под рутом, под рутом же пробовал запускать хранимку из под MySqlQueryBrowserб все работает.
Re: Mapserver + Mysql хранимка
Добавлено: 04 мар 2013, 04:57
Denis Rykov
Никогда не работал с MySQL, поэтому может быть вопросы глупые, но:
1) В первом варианте используется SELECT, а во втором его почему-то нет, вместо него call;
2) Что возвращает ваша функция, геометрии?
Re: Mapserver + Mysql хранимка
Добавлено: 04 мар 2013, 05:15
AntonAD
Denis Rykov писал(а):Никогда не работал с MySQL, поэтому может быть вопросы глупые, но:
1) В первом варианте используется SELECT, а во втором его почему-то нет, вместо него call;
2) Что возвращает ваша функция, геометрии?
Сам не так силен в этом, может ошибаюсь, но
1. Насколько понимаю это стандартный вызов хранимой процедуры (SELECT уже внутри).
2. Геометрии и некоторые их свойства (id, название). проверял без свойств, только геометрии - результат тот же.
Re: Mapserver + Mysql хранимка
Добавлено: 04 мар 2013, 06:12
trir
Может "спрятать" процедуру в View?
Re: Mapserver + Mysql хранимка
Добавлено: 04 мар 2013, 15:50
Tokha
А умеет ли MapServer вызывать хранимые процедуры, в виде call или exec?
У меня MSSQL. Соответственно, процедуру нельзя вызвать конструкцией select ID, GeomCol from MyPROCEDURE.
Несмотря на сложные запросы, пришлось пожертвовать некоторыми вещами и использовать VIEW.
А теперь возможно, что и от VIEW придется отказываться, т.к. в этом случае MSSQL почему-то не подхватывает пространственный индекс, в отличие от простого SELECT, где индекс подхватывается без проблем. Но с этим еще нужно детальнее разбираться.