Clarion ODBC MySQL символ подчеркивания в именах таблиц и полей

101 views
Skip to first unread message

Oleg Fomin

unread,
Apr 30, 2013, 8:11:41 AM4/30/13
to cla...@googlegroups.com
Коллеги,

Кто-то имеет положительный опыт работы с базой MySQL через Клашин ODBC
драйвер в случае, когда в именах таблиц и полей присутствует символ
подчеркивания?

У меня что-то не очень получается :(

То ошибка 47 "Invalid Record Declaration", то "Файл не найден".

Обстановка:
База в utf8
mysql-connector-odbc-5.2.4-ansi-win32
Clarion 8
Windows 7 x64

С уважением,
---
Oleg Fomin <ol...@fomin.info>

PS: После импорта в словарь все имена полей/таблиц с символом подчеркивания
есть в External Name и заключены в `такие_кавычки`. Простые имена в External
Name ничего не имеют.

PSS: В логе ODBC драйвера смотрю и вижу такой подозрительный запрос:
-- Driver name: MySQL ODBC 5.2 Driver Version: 05.02.0004
SELECT TABLE_NAME, TABLE_COMMENT, TABLE_TYPE, TABLE_SCHEMA
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND ( TABLE_TYPE='BASE TABLE' OR TABLE_TYPE='VIEW' )
AND TABLE_NAME LIKE 't_products';

Подозрительный потому, что для MySQL символ подчеркивания в строковой
константе LIKE имеет специальное значение, как и символ %, но обозначает
один любой символ. Несмотря на подозрительность, запрос этот выполняется
через интерактивный SQL нормально, возвращает нужную строку.

Rimantas Nedzinskas

unread,
Apr 30, 2013, 10:46:48 AM4/30/13
to cla...@googlegroups.com
Олег,

Я работал с MySQL, но через MAV ODBC. Попробуй убрать `такие_кавычки` в External Name. Помнится, у меня были с ними проблеммы. Без них все норм.

Rimas


2013/4/30 Oleg Fomin <ol...@fomin.info>

--
Вы получили это сообщение, поскольку подписаны на группу ClaList.

Чтобы отказаться от подписки на эту группу и перестать получать из нее сообщения, отправьте электронное письмо на адрес clalist+u...@googlegroups.com.
Подробнее о функциях можно узнать на странице https://groups.google.com/groups/opt_out.



Oleg Fomin

unread,
Apr 30, 2013, 3:45:47 PM4/30/13
to cla...@googlegroups.com
Rimas,

Спасибо за отклик. Direct ODBC - там все хорошо, особенно если сказать в
строке коннекта
INITSTMT={SET SESSION sql_mode='ansi';};

Вопрос был именно по штатному ODBC драйверу.
Как выяснилось...

1) `такие_кавычки` нужно убрать из аттрибута NAME() таблиц, иначе "File not
found", во внешних же именах полей эти кавычки не мешают, что с ними, что
без них - все едино.

2) Имя (label) поля, совпадающее с зарезервированным словом приводит к
ошибке "Invalid Record Declaration". Ниже наверняка не полный список таких
имен (с которыми пришлось столкнуться)
date
position
value
module
Лечение простое - опять таки в атрибуте NAME() поля прописывается это самое
имя, и все счастливы.

С уважением,
---
Oleg Fomin <ol...@fomin.info>


Reply all
Reply to author
Forward
0 new messages