|
|
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
Имеется ODBC подключение к MySQL серверу. Проблема в следующем: - при использовании драйвера 5.1 при попытке вставки в таблицу получаю ошибку Server does not support 4-byte encoded UTF8 characters - при использовании драйвера 3.51 вышеуказанная ошибка пропадает, но при запросе SELECT... возвращается только первая строчка (с 5.1 такого не происходит) Не хочется устраивать зоопарк из отдельных драйверов для каждого запроса, как бы заставить работать правильно хотя бы один из них? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 13:12:28 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
egorius, так вы покажите тут "хотя бы один из них" и ещё - с вашей стороны одбц-драйвера какой клиент? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 13:31:38 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
egoriusно при запросе SELECT... возвращается только первая строчка (с 5.1 такого не происходит)ХШ говорит, что вы пытаетесь вставить несколько записей несколькими же запросами в одном "батче". Или посылайте каждый запрос отдельно, или включайте multiple statements в св-вах подключения - http://dev.mysql.com/doc/refman/5.0/en/connector-odbc-configuration-connection-parameters.html#codbc-dsn-option-flags PS. Кстати, поиск выдаёт это и это . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 13:47:13 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
tangliregorius, так вы покажите тут "хотя бы один из них" Все параметры по-умолчанию, кроме Disable transaction support, который я установил в 1 tanglirи ещё - с вашей стороны одбц-драйвера какой клиент? Ascential DataStage 7.5.2 tanglirХШ говорит, что вы пытаетесь вставить несколько записей несколькими же запросами в одном "батче". Или посылайте каждый запрос отдельно, или включайте multiple statements в св-вах подключения Кто такой ХШ и с чего он взял, что я выполняю пакет? Еще разок: - на драйвере 5.2 при инсерте у меня ошибка размера UTF символов. Селект возвращает правильное количество строк тот самый поиск дает два вариант решения - проапгрейдить сервер (не мой вариант) и использовать версию драйвера 3.5, что я и сделал - на драйвере 3.5 проблемы с инсертом ушли, но при любом запросе я получаю только одну строку. На 5.2 такой проблемы не было. поиск дает такой вариант решения: установить параметр "numeric setting" в значение "Use US settings". В списке параметров ничего похожего не нашел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 14:39:06 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
egorius, Есть два варианта ODBC 5.2 драйверов -- Unicode и ANSI. (и только один вариант драйвера 3.51 -- ANSI). Какой используете? Если только один из двух, то мб попробовать второй? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.08.2013, 19:31:27 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
egoriusКто такой ХШ и с чего он взял, что я выполняю пакет?1)ХШ - Хрустальный Шар. Помогает форумным телепатам и уподобляющимся им догадываться о не озвученных, но важных моментах :) 2)С того, что "селект возвращает только одну строку". Откуда следует очевидный вывод, что должен возвращать не одну, иначе вы бы этого и не писали. Откуда следует другой, не менее очевидный вывод, что и вставлять вы пытаетесь не одну строку, а несколько. Ну а самая очевидна причина, почему они все не вставляются - батч-вставка + отключенный параметр "Allow multiple statements". Кстати, это подтверждается вашим скриншотом (посмотрите внимательно на вторую снизу галочку). egorius- на драйвере 3.5 проблемы с инсертом ушли, но при любом запросе я получаю только одну строку.Т.е. при любом запросе к любой таблице, даже к той, где ещё до всех ваших попыток инсерта были записи? Так и надо было сразу написать. Как можно понять ваш стартпост без этого уточнения - см. выше :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 05:30:09 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
lookategorius, Есть два варианта ODBC 5.2 драйверов -- Unicode и ANSI. (и только один вариант драйвера 3.51 -- ANSI). Какой используете? Если только один из двух, то мб попробовать второй? Пробовал оба варианта. ANSI вариант даже селектит с ошибками, так как база юникодовая. Юникодовый драйвер спотыкается только при инсерте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 09:06:40 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
tangliregoriusКто такой ХШ и с чего он взял, что я выполняю пакет?1)ХШ - Хрустальный Шар. Помогает форумным телепатам и уподобляющимся им догадываться о не озвученных, но важных моментах :) 2)С того, что "селект возвращает только одну строку". Откуда следует очевидный вывод, что должен возвращать не одну, иначе вы бы этого и не писали. Откуда следует другой, не менее очевидный вывод, что и вставлять вы пытаетесь не одну строку, а несколько. Ну а самая очевидна причина, почему они все не вставляются - батч-вставка + отключенный параметр "Allow multiple statements". Кстати, это подтверждается вашим скриншотом (посмотрите внимательно на вторую снизу галочку). egorius- на драйвере 3.5 проблемы с инсертом ушли, но при любом запросе я получаю только одну строку.Т.е. при любом запросе к любой таблице, даже к той, где ещё до всех ваших попыток инсерта были записи? Так и надо было сразу написать. Как можно понять ваш стартпост без этого уточнения - см. выше :) Не, хрустальный шар ошибается. Инсерты я делаю по одному, но в цикле (а не в батче). "Allow multiple statements" в моем случае в принципе не актуален, так как стейжу на выходе нужен только один набор данных, а результаты нескольких выражений его с ума сведут :) Ну и что бы уж совсем убедить ХШ - в логах одбс на каждую сессию идет по одному запросу :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 09:12:37 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
Ну, ошибается, так ошибается. Бывает и такое :) А результат выполнения каждого отдельного инсерта - положительный? Ошибок в процессе не возникает? Пробовали обернуть всю эту кучу инсертов в транзакцию (если у вас иннодб)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 11:52:01 |
|
||
|
Настройка ODBC
|
|||
|---|---|---|---|
|
#18+
Не, инсерты проходят без проблем. С транзакциями так же борода - их поддержку я отключил на уровне драйвера. Была ошибка Commands out of sync; you can't run this command now Судя по описанию, я пытаюсь получить данные заброса не обработав данные предыдущего. В логах odbc перед выполнением каждого запроса добавляется SELECT DISTINCT `Computer`, `SoftwareProduct`, `DataStore` FROM MetaStage_Loc_Info; Подозреваю ругался он на меня, что я не читаю результаты этого селекта. Особо вникать в суть вопроса не стал - отключил поддержку транзакций ибо у меня там каких-то нюансов с целостностью данных быть не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.08.2013, 18:02:48 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=47&tid=1836289]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 285ms |

| 0 / 0 |
