SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003168SAS.Планета[All Projects] Багpublic09-01-2017 10:3412-01-2017 19:01
ReporterDesert Rat 
Assigned Tozed 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionno change required 
PlatformWindowsOS7OS VersionUltimate
Product Version.Nightly 
Target VersionFixed in Version 
Summary0003168: Не работают метки в MySQL через ODBC
DescriptionПри использовании ODBC MySQL (5.1 5.2 5.3) БД создается не до конца и с ошибками. Причиной является пустой параметр имени в БД.
select COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, 0 INDEX_COUNT from INFORMATION_SCHEMA.COLUMNS where UPPER(TABLE_SCHEMA) = '' and UPPER(TABLE_NAME) = 'USER'

При использовании Connection String:
select COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, 0 INDEX_COUNT from INFORMATION_SCHEMA.COLUMNS where UPPER(TABLE_SCHEMA) = 'DRIVER={MYSQL ODBC 5.3 ANSI DRIVER};SERVER=localhost;DATABASE=SASPLANET;UID=root;PASSWORD=root;' and UPPER(TABLE_NAME) = 'USER'
Steps To Reproduce1. Установить 5.3 ODBC MySQL Driver
2. Настроить ODBC в Windows через Источник Данных ODBC
3. Включить global_log в MySQL
4. Использовать ODBC в SasPlanet
Additional InformationSET NAMES utf8
SET character_set_results = NULL
SET SQL_AUTO_IS_NULL = 0
set @@sql_select_limit=DEFAULT
select COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, 0 INDEX_COUNT from INFORMATION_SCHEMA.COLUMNS where UPPER(TABLE_SCHEMA) = '' and UPPER(TABLE_NAME) = 'USER'

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 'USER'

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 'USER'

CREATE TABLE User (ID bigint NOT NULL,uName mediumtext character set UTF8, PRIMARY KEY(ID))

select COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, 0 INDEX_COUNT from INFORMATION_SCHEMA.COLUMNS where UPPER(TABLE_SCHEMA) = '' and UPPER(TABLE_NAME) = 'USER'

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 'USER'

SHOW KEYS FROM `USER`
SHOW KEYS FROM `USER`
TagsNo tags attached.
Attached Filespng file icon Image 1.png [^] (22,728 bytes) 12-01-2017 11:42


png file icon Image 2.png [^] (8,875 bytes) 12-01-2017 11:43


png file icon Image 3.png [^] (9,683 bytes) 12-01-2017 15:39

- Relationships

-  Notes
(0017771)
zed (manager)
12-01-2017 11:42
edited on: 12-01-2017 11:51

У меня всё работает. Опишу подробно:

1. Установить 32-битный драйвер 5.3.7
2. Запустить сервер:

mysqld --skip-grant-tables --console --verbose --max_allowed_packet=16M

3. Создать БД:

mysql -vvvv -u root -e "CREATE DATABASE IF NOT EXISTS sasgis_marks CHARACTER SET utf8 COLLATE utf8_general_ci;"

4. В "Администрирование - Источники данных ODBC (32-разрядная версия)" добавить новый источник: "MySQL ODBC Unicode Driver" с настройками как на скриншоте "Image 1.png"
5. В SAS создать новую БД меток с настройками как на скриншоте "Image 2.png"

Сервер 5.6.26 (32-битный) на Windows 8.1 x64.

(0017772)
Desert Rat (reporter)
12-01-2017 13:47

Сервер Ubuntu 14.04.1 i686. mysqld 5.5.53.

Клиенты:
Win 7 x64. Stable 160707.9476. mysql-connector-odbc-5.3.7-win32
Win 10 x64. Nightly 161222.9650. mysql-connector-odbc-5.3.7-win32

Оба клиента не могут создать правильно таблицы изза неверных запросов в SQL. SQL рабочий, так как на нем крутятся несколько сервисов. БД создавалось как указанно в прошлом комментарии. Источник данных был задан через "Источники данных ODBC". Настроено как на скриншоте.

ESQLite3Exception: Error SQLITE_ERROR (1) [Step] using 3.13.0 - TSQLRestStorageExternal.Create: TSQLUser: unable to create external missing field User.uName - SQL="ALTER TABLE User ADD uName mediumtext character set UTF8"

Если удалить поле uName, создается следующая таблица, и так же с ошибкой.
(0017773)
zed (manager)
12-01-2017 15:39

> Оба клиента не могут создать правильно таблицы изза неверных запросов в SQL

Значит, при работе с MySQL 5.5.x и младше, надо использовать Connection String в настройках SAS, а не DSN.
(0017774)
Desert Rat (reporter)
12-01-2017 16:05

При первом запуске создалась только таблица User и та же ошибка. При повторных другая ошибка.

Driver={MySQL ODBC 5.3 UNICODE Driver};Server=192.168.0.1;Database=sasplanet;User=root;password=root;

ESQLite3Exception: Error SQLITE_ERROR (1) [Step] using 3.13.0 - TSQLRestStorageExternal.Create: external table creation TSQLUser failed: GetFields() returned nil - SQL="User", extended_errcode=1

SET NAMES utf8
SET character_set_results = NULL
SET SQL_AUTO_IS_NULL = 0
set @@sql_select_limit=DEFAULT

select COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, 0 INDEX_COUNT from INFORMATION_SCHEMA.COLUMNS where UPPER(TABLE_SCHEMA) = 'Driver={MySQL ODBC 5.3 UNICODE Driver};Server=192.168.0.1;Database=sasplanet;User=root;password=root;' and UPPER(TABLE_NAME) = 'USER'

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 'USER'

Field List User
SHOW KEYS FROM `USER`
SHOW KEYS FROM `USER`
CREATE TABLE User (ID bigint NOT NULL,uName mediumtext character set UTF8, PRIMARY KEY(ID))
ALTER TABLE User ADD uName mediumtext character set UTF8
Quit

1й селект не валидный.
2й селект:
+------------+---------------+------------+--------------+
| TABLE_NAME | TABLE_COMMENT | TABLE_TYPE | TABLE_SCHEMA |
+------------+---------------+------------+--------------+
| User | | BASE TABLE | sasplanet |
+------------+---------------+------------+--------------+

SHOW KEYS FROM `USER`
Table 'sasplanet.USER' doesn't exist

Но если SHOW KEYS FROM `User'
приходит валидный результат
(0017775)
zed (manager)
12-01-2017 16:07

Значит, с версией 5.5 оно вообще не работает. Тестируйте на 5.6.
(0017776)
Desert Rat (reporter)
12-01-2017 18:43

Переход на 5.7 не дал результата.
А вот выставление в конфиге MySQL lower_case_table_names = 1; решил проблема.
MySQL в Linux case sensetive в отношении имен таблиц. А в Win нет.
(0017777)
zed (manager)
12-01-2017 19:00
edited on: 12-01-2017 19:01

Хорошо, что есть такая опция и плохо, что по дефолту разное поведение на разных платформах.

Добавлю ещё ссылку на доки, про чувствительность к регистру, может кому пригодится: 10.2.2 Identifier Case Sensitivity


- Users who viewed this issue
User List Anonymous (3613x), Mitek (1x), arhelon (1x), SlavutichRED (1x), svs14 (2x), hrucker (3x), zarius (1x), gma (1x), Desert Rat (27x), Garl (2x), vdemidov (3x), zed (20x), DozoR (3x)
Total Views 3678
Last View 22-11-2024 08:55

- Issue History
Date Modified Username Field Change
09-01-2017 10:34 Desert Rat New Issue
12-01-2017 11:33 zed Summary ODBC MySQL не рабочий => Не работают метки в MySQL через ODBC
12-01-2017 11:42 zed Note Added: 0017771
12-01-2017 11:42 zed File Added: Image 1.png
12-01-2017 11:43 zed File Added: Image 2.png
12-01-2017 11:44 zed Status new => feedback
12-01-2017 11:51 zed Note Edited: 0017771 View Revisions
12-01-2017 13:47 Desert Rat Note Added: 0017772
12-01-2017 13:47 Desert Rat Status feedback => new
12-01-2017 15:39 zed Note Added: 0017773
12-01-2017 15:39 zed File Added: Image 3.png
12-01-2017 15:40 zed Status new => feedback
12-01-2017 16:05 Desert Rat Note Added: 0017774
12-01-2017 16:05 Desert Rat Status feedback => new
12-01-2017 16:07 zed Note Added: 0017775
12-01-2017 18:43 Desert Rat Note Added: 0017776
12-01-2017 19:00 zed Note Added: 0017777
12-01-2017 19:01 zed Status new => closed
12-01-2017 19:01 zed Assigned To => zed
12-01-2017 19:01 zed Resolution open => no change required
12-01-2017 19:01 zed Note Edited: 0017777 View Revisions



Copyright © 2007 - 2024 SAS.Planet Team