|
|
|
| Здравствуйте.
проблема:
при записи данных кириллицей (через клиент mysql.exe с помощью конструкции
load data infile) в поле типа text вместо 'абвгд' -> 'рстуф'
запись с помощью update нормально проходит.....
что-то я совсем ничего не понимаю, помогите пожалуйста. | |
|
|
|
|
|
|
|
для: btr
(19.02.2012 в 19:11)
| | В какой кодировке данные в файле и в какой кодировке таблица MySQL? | |
|
|
|
|
|
|
|
для: cheops
(20.02.2012 в 11:06)
| | ANSI и cp1251. и забавно так, пишешь 'гдеж' получаешь 'фхцч' , а английские буквы не смещаются по алфавиту | |
|
|
|
|
|
|
|
для: btr
(20.02.2012 в 13:27)
| | >ANSI и cp1251. и забавно так, пишешь 'гдеж' получаешь 'фхцч' , а английские буквы не смещаются по алфавиту
Дело в том, что командная строка в Windows имеет по умолчанию кодировку cp866, поэтому нужно либо сразу после соединения выполнять запрос
либо, если хотите работать именно в кодировке Windows1251, нужно запустить командную строку, сменить кодировку при помощи команды chcp
тогда сразу после установки соединения с сервером нужно выполнять команду
| |
|
|
|
|
|
|
|
для: cheops
(20.02.2012 в 13:54)
| | Спасибо, сейчас попробую. Кстати, чувствую что это както связано, я в настройках конф файла в секции клиент поставил следующие директивы:
character-sets-dir="Z:/usr/local/mysql/share/charsets/"
default-character-set=cp1251
| как это повлияло на мою проблему и не аналогия ли это предложенной Вами команде | |
|
|
|
|
|
|
|
для: btr
(20.02.2012 в 13:58)
| | Нет, консоль, будет всегда иметь кодировку 866, настройкой my.ini этого не исправить (возможно в операционной системе, реестре это где-то настраивается). | |
|
|
|
|
|
|
|
для: cheops
(20.02.2012 в 14:01)
| | Значит так.
1 открыл комстроку, ввел chcp1251 (комстрока вывела 'козяблики ' :1251) ((Текущая кодовая страница: 1251))
2 запустил mysql
3 SET NAMES cp1251; Query OK, 0 rows affected (0.03 sec)
4 просматриваю содержимое с помощью select. Вижу все равно вместо 'абвгд' 'рстуф'
4.1 (но при попытке скопировать это 'рстуф' из окна комстроки сюда из буфера выпало всежтаки 'абвгд' )
я так понимаю, что это просто комстрока так показывает, а в поле то все правильно (и в последствии при запросах будет вылезать в правильном виде?
и по поводу конф файла, правильно ли я сделал или в будущем напорюсь на подводный камень какой-нибудь? | |
|
|
|
|
|
|
|
для: btr
(20.02.2012 в 14:14)
| | chcp - это команда (change code page), после неё необходимо добавить пробел
Чтобы проверить текущую кодировку просто выполните эту команду без параметров
в ответ она выдаст вам номер кодировки (866 или 1251). | |
|
|
|
|
|
|
|
для: cheops
(20.02.2012 в 14:26)
| | ну я так и делал, здесь писал - ошибся.
Значит так.
написал SET NAMES cp866;
все сразу стало показываться как надо.
Огромное спасибо за помощь.
еще два вопроса, если можно:
1 в Вашей книге (mysql5) написано, что поле типа SET может принимать сразу несколько значений из списка, как их можно в это поле вставить при загрузке из файла?
2 есть ли возможность при запуске клиента подгружать некий командный файл с несколькими операциями (создать базу, выбрать базу, создать таблицу, загрузить данные из файла)? | |
|
|
|
|
|
|
|
для: btr
(20.02.2012 в 14:38)
| | 1. В кавычках, через запятую, т.е. если у вас скажем поле имеет тип SET('fst', 'snd', 'thd'), то значения для этого поля должны выглядеть так 'fst, snd, thd' или так 'fst, thd'.
2. По-моему нет, что-то не могу припомнить, но вы можете использовать команду SOURCE, которая выполняет SQL-запросы из заранее подготовленного файла (чтобы не возиться с путями можно положить его в каталог bin).
PS Под новые вопросы лучше заводить новые темы. | |
|
|
|
|
|
|
|
для: cheops
(20.02.2012 в 18:11)
| | Спасибо за науку. Вот действительно, смотришь в книгу - видишь фигу :( два раза на эту страницу смотрел | |
|
|
|