Задавайте вопросы, мы ответим
Вы не зашли.
Всем привет. Помогите решить такую проблему..
Запускаю mysql из cmd.exe таким образом :
mysql --user=root --password=root --default-character-set=utf8
Дальше создаю базу :
create database xitex_shop character set utf8;
Затем таблицу :
create table category (id int not null auto_increment primary key,
name varchar(30) character set utf8 not null,
description varchar(255) character set utf8) character set utf8;
А когда пробую добавить в таблицу запись :
insert into category (name, description) values ('Процессоры', 'Процессор
ы от Intel, AMD');
Мне в ответ такая ошибка :
ERROR 1406 (22001): Data too long for column 'name' at row 1
Не понимаю в чем проблема...вроде указал явно кодировки...почему длина слишком большая ?
Пробовал и оставить по одному символу - та же ошибка
Неактивен
Для таблиц Вы задали кодировку правильно, даже несколько избыточно. Но для подключения Вам нужно указать ту кодировку, в которой работает консоль. Попробуйте после подключения выполнить
Неактивен
cp1251 мне не подходит...надо utf8)
Если пишу :
SET NAMES utf8;
А потом :
insert into category (name, description) values ('Проц', 'Проц');
Получаю знакомую ошибку :
ERROR 1406 (22001): Data too long for column 'name' at row 1
Как-нибудь можно из консоли Windows XP вставить данные в БД по кодировке utf8 ?
Неактивен
Данные вставляются в таблицу в той кодировке, в которой таблица. А клиентам передаются в той кодировке, в которой клиент их передает. В данном случае надо указать SET NAMES ту кодировку, в которой работает консоль. MySQL уже сама перекодирует в кодировку, в которой таблицы. См. http://sqlinfo.ru/articles/encoding/
Неактивен
А если скаже я вставляю в БД данные НЕ из MySQL Command Line, а скажем из java-сервлета(там уж точно в utf8), а когда делаю в MySQL Command Line :
SELECT * FROM category;
то вижу вопросительные знаки в тех записях, которые я вставил через сервлет..это нормально да ? Т.к. консоль выводит на экран символы в cp1251, а в БД они в кодировке utf8..
Неактивен
В сервлете после коннекта надо выполнить:
query("SET NAMES UTF8");
и только после этого вставлять данные
Если консоль в виндоус вообще работает в какой-либо кодировке, то либо SET NAMES CP1251 либо SET NAMES CP866 в консоли должно привести к нормальному отображению данных (зависит от версии Windows), попробуйте лучше MySQL Query Browser.
Неактивен
В сервлете перед подключением делаю так :
PropertiesconnInfo = new Properties();
connInfo.put("user", user);
connInfo.put("password", password);
connInfo.put("useUnicode","true");
connInfo.put("characterEncoding","UTF-8");
В MySQL Query Browser нормально отображаются данные ( т.е. русские буквы - русские ))...а вот с консолью беда(
Неактивен
Если в Query browser нормально, значит ОК. Если виндоус английский, то консоль может вообще не работать с русской кодировкой, если русский - то работает, но вот с какой, не знаю.
Неактивен
ок, большое спасибо за помощь
Неактивен