|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Всем доброго времени суток, и такой вопрос, возможно ли на стороне сервера перевернуть имя столбца таблицы в нижний регистр? Например софтина(астериск) шлёт запрос вида select * from sippeers where name='xxxx'; и если в базе создавать столбцы с именем в верхнем регистре астериск их не видит, а если с нижним то при таком запросе получает отлуп от сервера бд, с ошибкой что такого столбца нет. Поэтому мне и нужно чтобы когда на сервер приходит запрос колонки в верхнем регистре, он переворачивал его в нижний. Использую Firebird 3.0 ос Debian 10, коннект asterisk с бд через odbc драйвер ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 17:54 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
СУБД сохраняют регистр имён объектов (таблиц, представлений, колонок и т.п.), если при создании это имя было взято в кавычки. Разумеется, такие имена надо и дальше кавычить. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 17:58 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat, используй 1-й диалект. ему пофигу регистр в именах объектов. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:00 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Т.е. получается мне в настройках самой бд нужно поменять диалект? Сейчас вроде стоит 3й ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:10 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat Т.е. получается мне в настройках самой бд нужно поменять диалект? Сейчас вроде стоит 3й если его не указать, то будет 3-й (по умолчанию). ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:12 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Basil A. Sidorov СУБД сохраняют регистр имён объектов (таблиц, представлений, колонок и т.п.), если при создании это имя было взято в кавычки. Разумеется, такие имена надо и дальше кавычить. К сожалению я даже предположить не могу где в исходниках астериска и что мне придётся править для этого) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:15 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящий Andrey_RedCat Т.е. получается мне в настройках самой бд нужно поменять диалект? Сейчас вроде стоит 3й если его не указать, то будет 3-й (по умолчанию). Значит нужно 6удет пересоздать бд ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:17 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Мимопроходящийиспользуй 1-й диалект. Не издевайся над чайником, он ведь реально пойдёт в этот обрыв... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:20 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Мимопроходящийиспользуй 1-й диалект. Не издевайся над чайником, он ведь реально пойдёт в этот обрыв... Чайник электрический? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 18:26 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat Например софтина(астериск) шлёт запрос вида select * from sippeers where name='xxxx'; и если в базе создавать столбцы с именем в верхнем регистре астериск их не видит, а если с нижним то при таком запросе получает отлуп от сервера бд, с ошибкой что такого столбца нет. или select * from "sippeers" или select * from SIPPEERS или select * from "SIPPEERS"? А таблицу создаешь create table sippeers ...? или ? Где фактический ДДЛ и полный текст ошибки? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.07.2021, 19:09 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat, Все очень просто. Не надо создавать объекты с именами в двойных кавычках, и всё. http://www.ibase.ru/ibfaq#dtproblem ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 00:00 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky Andrey_RedCat Например софтина(астериск) шлёт запрос вида select * from sippeers where name='xxxx'; и если в базе создавать столбцы с именем в верхнем регистре астериск их не видит, а если с нижним то при таком запросе получает отлуп от сервера бд, с ошибкой что такого столбца нет. или select * from "sippeers" или select * from SIPPEERS или select * from "SIPPEERS"? А таблицу создаешь create table sippeers ...? или ? Где фактический ДДЛ и полный текст ошибки? Создавал сначала без кавычек получал ошибку вида res_config_odbc.c:1224 require_odbc: Realtime table sippeers@Firebird requires column 'name', but that column does not exist! Затем создал так: CREATE TABLE sippeers ( "id" INTEGER generated by default as identity primary key, "name" VARCHAR(40) NOT NULL, "ipaddr" VARCHAR(45), "port" INTEGER, ... И получил ошибку вида [Jul 28 08:10:11] WARNING[8805]: res_config_odbc.c:122 custom_prepare: SQL Prepare failed! [SELECT * FROM sippeers WHERE name = ? AND host = ?] [Jul 28 08:10:11] WARNING[8805]: res_odbc.c:538 ast_odbc_print_errors: SQL Prepare returned an error: HY000: [ODBC Firebird Driver][Firebird]Dynamic SQL Error SQL error code = -206 Column unknown NAME At line 1, column 32 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 06:11 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
kdv Andrey_RedCat, Все очень просто. Не надо создавать объекты с именами в двойных кавычках, и всё. http://www.ibase.ru/ibfaq#dtproblem Это то понятно, но проблема в том что астериск отправляет сам запрос без кавычек и соответственно не находит названия таблицы созданной маленькими буквами в кавычках ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 06:12 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
а не проще ли пойти по проторенной дорожке и подружить его с бд, с которой он хорошо работает? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 07:04 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Дегтярев Евгений а не проще ли пойти по проторенной дорожке и подружить его с бд, с которой он хорошо работает? Не смог победить зависимости драйвера ODBC MariaDB/MySQL, чет как-то на дебиане 10 не задалось с этим ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 08:08 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat Это то понятно ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 08:40 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Andrey_RedCat Это то понятно Честно, я не могу никак понять в чем проблема, вернее проблема то ясна, но вот решения я найти не могу ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 09:31 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Вообще должно работать и без кавычек. Как костыль можно создать оба столбца - с кавычками и без. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 09:51 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Меня одного смущает NAME в названии поля? Andrey_RedCat Column unknown NAME Переименуй столбец и проверь как будет работать ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 10:06 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat но вот решения я найти не могу kdvВсе очень просто. Не надо создавать объекты с именами в двойных кавычках, и всё.Andrey_RedCatЗатем создал так: Код: sql 1. 2. 3. 4. 5.
Или, если уж вам так неймётся кавычить идентификаторы, то: Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 10:07 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Basil A. Sidorov Andrey_RedCat но вот решения я найти не могу kdvВсе очень просто. Не надо создавать объекты с именами в двойных кавычках, и всё. Код: sql 1. 2. 3. 4. 5.
Или, если уж вам так неймётся кавычить идентификаторы, то: Код: sql 1. 2. 3. 4. 5.
Когда создаются объекты без кавычек астериск ругается Код: sql 1. 2. 3. 4.
Потому-что сервер бд возвращает имена в верхнем регистре ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 10:57 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat [Jul 28 08:10:11] WARNING[8805]: res_config_odbc.c:122 custom_prepare: SQL Prepare failed! [SELECT * FROM sippeers WHERE name = ? AND host = ?] а вот это кто пишет? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 11:06 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat Дегтярев Евгений а не проще ли пойти по проторенной дорожке и подружить его с бд, с которой он хорошо работает? Не смог победить зависимости драйвера ODBC MariaDB/MySQL, чет как-то на дебиане 10 не задалось с этим Есть пакет asterisk-mysql с модулями app_mysql, cdr_mysql, res_config_mysql они слинкованы с клиентом mariadb и можно работать на прямую без ODBC. Выше упоминали использование dialect 1, но не сказали, что его можно настроить в подключении (odbc.ini). ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 11:22 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Короче, я кажется понял. - Софтина запрашивает мету по таблице - Ничего не знает про регистры возвращаемых имен полей - Проверяет for field in fields if field <> requiredfield then Error - Генерит запросы в нижнем регистре В таких ситуациях, наверно, и двойное поле не поможет. Потому что и '"name"', и 'NAME' <> 'name'. Но вообще это косяк софтины (астериска), может, им направить реквест? Можно, конечно, пропатчить клиентскую либу ФБ или вообще сам сервер. Но правильней все-таки устранить косяк в астериске P.S. Хотя закавыченное поле проходит проверку меты... может, и выгорит вариант с двумя полями ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 11:36 |
|
Подмена запроса на стороне сервера Firebird
|
|||
---|---|---|---|
#18+
Andrey_RedCat Дегтярев Евгений а не проще ли пойти по проторенной дорожке и подружить его с бд, с которой он хорошо работает? Не смог победить зависимости драйвера ODBC MariaDB/MySQL, чет как-то на дебиане 10 не задалось с этим и поэтому решили большего гемора поиметь... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.07.2021, 11:45 |
|
|
start [/forum/topic.php?fid=40&msg=40086531&tid=1559978]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
others: | 237ms |
total: | 535ms |
0 / 0 |