Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
Разрабатываю приложение на Delphi, которое взаимодействует с удалённым сервером MariaDB (через ADO и ODBC-драйвер). На некоторых компьютерах (судя по всему, на Windows до 10 - Vista, 7, 8) при попытке отправить параметризированный запрос (INSERT, UPDATE) с кириллицей появляется ошибка: автор[MySQL][ODBC 8.0(w) Driver][mysqld-5.5.5-10.3.29-MariaDB]Incorrect string value: '\xC2\xC2\xC8 \xF1\xE8…' for column <здесь целевые таблица и столбец> at row 1 Столбец в utf8. При этом, если не использовать запросы вручную, а, например, редактировать данные в TDBGrid, то кириллица успешно отправляется. По всей видимости, где-то несовпадение кодировки при использовании параметров. Но вроде бы все параметры в utf8: база данных, столбец, драйвер, Delphi XE3 с Юникодом. В SELECT всё корректно отображается. Также важный момент: кириллица корректно отправляется, если задать DataType параметра в ftWideString. В Windows 10 при присваивании значения параметра (через Value) DataType автоматически устанавливается в ftWideString, а в старых системах - ftString, поэтому и приходится устанавливать вручную ftWideString. По всей видимости в Windows 10 драйвер видит, что строки должны быть в ftWideString, а в старых системах нет. Как это поправить? Тип строк, которые добавляются в строковые параметры запроса - обычный string. Подключение к базе данных: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. Также прикладываю значения системных переменных character (вызов из программы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 09:25 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
и приходится устанавливать вручную ftWideString. По какому-то событию (н-р при открытии формы) пробегать по параметрам всех датасетов и выставлять программно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 10:15 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
L_argo и приходится устанавливать вручную ftWideString. Очень уж костыльное решение :) Должно быть что-то другое. Хотя, по сути, сейчас нечто подобное и приходится использовать. Все запросы динамические, поэтому присвоили CommandText, и для каждого параметра указали DataType, присвоили Value. Но, повторюсь, думаю должно существовать какое-то более фундаментальное решение вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 10:37 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
M1ndAction, попробуйте: Код: pascal 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 10:54 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
Кроик Семён M1ndAction, попробуйте: Код: pascal 1. 2. 3. Да, пробовал такой вариант - безрезультатно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 11:03 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
M1ndAction, а просто указание COLLATE utf8_general_ci в самих запросах не спасает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 11:28 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
M1ndAction Подключение к базе данных: M1ndAction Также прикладываю значения системных переменных character ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 13:19 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
M1ndActionНо вроде бы все параметры в utf8: база данных, столбец, драйвер Вот только тебя в сообщении об ошибке явный ANSI (Windows-1251). А вообще "уже смешно" начинается на "через ADO и ODBC-драйвер". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 13:35 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
Gerasimenko M1ndAction, а просто указание COLLATE utf8_general_ci в самих запросах не спасает? Не пробовал, но подобного - правки существующих запросов - хотелось бы избежать. _Vasilisk_ M1ndAction Подключение к базе данных: M1ndAction Также прикладываю значения системных переменных character Изображение к первому сообщению не прикрепилось, так что покажу текстом: character_set_client = utf8 character_set_connection = utf8 character_set_database = utf8 character_set_filesystem = binary character_set_results = character_set_server = latin1 character_set_system = utf8 А что касается кода вставка, то например так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. Dimitry Sibiryakov M1ndActionНо вроде бы все параметры в utf8: база данных, столбец, драйвер Вот только тебя в сообщении об ошибке явный ANSI (Windows-1251). А вообще "уже смешно" начинается на "через ADO и ODBC-драйвер". Да, возможно ANSI, хотя я пробовал указывать charset=cp1251 в строке соединения, но безрезультатно. Возможно, что-то иное по настройкам нужно скорректировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 13:58 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
M1ndActionИзображение к первому сообщению не прикрепилось, так что покажу текстом: character_set_client = utf8 character_set_connection = utf8 character_set_database = utf8 character_set_filesystem = binary character_set_results = character_set_server = latin1 character_set_system = utf8 Это именно у проблемного коннекта или (внезапно) у коннекта в котором всё работает? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 14:13 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov M1ndActionИзображение к первому сообщению не прикрепилось, так что покажу текстом: character_set_client = utf8 character_set_connection = utf8 character_set_database = utf8 character_set_filesystem = binary character_set_results = character_set_server = latin1 character_set_system = utf8 Это именно у проблемного коннекта или (внезапно) у коннекта в котором всё работает? Они идентичны: и у проблемного соединения, и у рабочего выводятся одни и те же значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 14:17 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
M1ndActionПо всей видимости в Windows 10 драйвер видит, что строки должны быть в ftWideString, а в старых системах нет. Как это поправить? Для начала - найти который именно из пяти последовательно подключенных тобою драйверов это "видит". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 14:21 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov M1ndActionПо всей видимости в Windows 10 драйвер видит, что строки должны быть в ftWideString, а в старых системах нет. Как это поправить? Для начала - найти который именно из пяти последовательно подключенных тобою драйверов это "видит". Поподробнее, пожалуйста, откуда столько драйверов? Я использую только один - официальный от MySQL, который указан в строке подключения соединения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 14:31 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
M1ndAction Я использую только один - официальный от MySQL https://mariadb.com/kb/en/mariadb-connector-odbc/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 14:38 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
M1ndActionПоподробнее, пожалуйста, откуда столько драйверов? 1. VCL обёртка для ADO. 2. ADO драйвер для OLE DB. 3. OLE DB драйвер для ODBC. 4. ODBC драйвер для MySQL. 5. Собственно MySQL драйвер. Раз список одинаков, то пятую позицию можно считать невиновной. Остаются ещё четыре. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 14:38 |
|
||
|
Ошибка Incorrect string value на некоторых системах
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ M1ndAction Я использую только один - официальный от MySQL https://mariadb.com/kb/en/mariadb-connector-odbc/ Но они ведь совместимы между собой. Но вы правы, также исследую этот момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2021, 15:09 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2037256]: |
0ms |
get settings: |
13ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
175ms |
get topic data: |
13ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 280ms |
| total: | 568ms |

| 0 / 0 |
