Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2014, 22:44   #1
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
Хорошо Ошибка кодировки при заходе под другим пользователем

Использую MySQL 5.5.25 и UniDAC 5.0.1

Заходил в свое приложение под rootом - вводил в таблицы данные и создавал пользователей через запрос.

Захожу в приложение под новым пользователем - все запускается и открывается но в таблицах знаки вопроса. Если зайти под rootом - все нормально.

Для соединения используется UniConnection

Так то все работает - но почему проблема с кодировкой, сроки сдачи диплома уже горят...

Последний раз редактировалось Muramidaza; 19.03.2014 в 23:15.
Muramidaza вне форума Ответить с цитированием
Старый 19.03.2014, 23:25   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

тип полей наверное не юникод?
eval вне форума Ответить с цитированием
Старый 19.03.2014, 23:33   #3
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию

Цитата:
Сообщение от eval Посмотреть сообщение
тип полей наверное не юникод?
Вся база utf8_general_ci

Если я захожу под пользователем ALL_PRIVILEGES то все норм отображается, а если с правами только на отдельные таблицы то знаки вопроса - в тех таблицах которые разрешены (которые не разрешены не запрашиваются )
Muramidaza вне форума Ответить с цитированием
Старый 20.03.2014, 00:33   #4
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию

При заходе в базу под пользователем с привилегией SUPER отображается все нормально, при заходе под другим пользователем - отображаются знаки вопроса. Вся база utf8_general_ci

my.ini

Код:
# The following options will be passed to all MySQL client.
[client]
port                  = 3306
socket                = /tmp/mysql5.sock
character-sets-dir    = /usr/local/mysql-5.5/share/charsets

# Кодировка консоли mysql.exe по умолчанию.
default-character-set = cp1251


# The MySQL server
[mysqld]

# Обработывать запросы ТОЛЬКО с локальной машины (повышает безопасность).
# Если вы хотите, чтобы MySQL-сервер был доступен из сети,
# уберите следующую ниже директиву.
port		 = 3306

# Внутренняя кодировка таблиц на сервере.
character-set-server = utf8 

# Кодировка клиента по умолчанию (преобразование из cp1251 в utf8 и обратно
# происходит автоматически).
init-connect = "set names cp1251"
Muramidaza вне форума Ответить с цитированием
Старый 20.03.2014, 23:15   #5
Muramidaza
Пользователь
 
Регистрация: 08.01.2014
Сообщений: 53
По умолчанию

Оказывается, что сервер MySQL может хранить данные в формате, указанном в строчке character-set-server = utf8 в конфигурационном файле my.ini, а обмениваться с клиентом в той кодировке, которая указана в строке init-connect = "set names cp1251".
При соединении под пользователем SUPER последняя строчка игнорируется и данные передаются в том формате, в котором хранятся на сервере. Это якобы, если намудрили с кодировками, то чтобы хоть как то подключиться к серверу используется эта особенность. Как это отключить не нашел.
А так получается, что данные могут хранится в формате UTF-8 а с виндусовским клиентом обменивать на понятном ему cp1251.
Muramidaza вне форума Ответить с цитированием
Старый 20.03.2014, 23:25   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

перед запросом вызывайте
set names utf8
и будет счастье, только есть ли оно в MySQL ...
eval вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать так, чтобы при наведении мышкой на объект, который находится под другим, этот объект выходил на первый план? Zaza7 HTML и CSS 3 17.01.2013 10:23
Бесконечный цикл при заходе на метку. Как обойти? The Real Kos Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 24.09.2012 11:02
Как увидеть изменения в БД, внесенные другим пользователем? Сергей089 Помощь студентам 5 12.02.2010 15:45
Как снять с файла признак что он занят другим пользователем Chelentano Microsoft Office Excel 1 12.08.2009 10:56
Запуск процесса под другим пользователем Андреy Win Api 3 03.12.2008 17:57