|
|
|
| В общем, имеется некая таблица:
Field type
name varchar(255)
opjsanie mediumblob
Пытаюсь, ради пробы, вставить в неё русский текст из текстового файла следующего (именно такого!) вида:
шоишщгишщги зщшрзщгижзгшщпизшгщи
ждолтижщолрижщ лорипмжоижшгои
жол дгрмлдгнмлдг
лоижшоишоги дшрмидшгнмидшгнмидш
И получаю сообщение об ошибке, приведённое в названии темы.
Помогите. | |
|
|
|
|
|
|
|
для: snakeRU54
(16.08.2009 в 19:38)
| | Настройку кодировки соединения при помощи запроса
производите? И какую кодировку имеет таблица по умолчанию? | |
|
|
|
|
|
|
|
для: cheops
(16.08.2009 в 19:44)
| | Благодарствую. Сделал
set database 'имярек' character set cp1251;
Всё вошло, но в таблице появились косяки.
В столбце 'Name' - вопросы.
В столбце 'opisanie' - сплошная тарабарщина.
000.txt (из которого и подгружаю в таблицу) делал в windows, "Блокнотом". Кодировки cp1251 в "Блокноте", в меня "Сохранить как..." - нет)))) Где её искать? | |
|
|
|
|
|
|
|
для: snakeRU54
(16.08.2009 в 19:54)
| | Имеется в виду кодировка таблицы по умолчанию (дело в том, что нужно указать, что она также хранит данные в кодировке cp1251). Выполните запрос
где tbl - имя вашей таблицы. Как выглядит ответ? | |
|
|
|
|
|
|
|
для: cheops
(16.08.2009 в 20:04)
| | Таблицу я пересоздал, но с теми же параметрами, что и были.
Ответ таков:
|a |create table 'a' (
'name' varchar(255) not null,
'opisanie' mediumblob
) engine=innodb default charset=cp1251 | | |
|
|
|
|
|
|
|
для: snakeRU54
(16.08.2009 в 20:25)
| | Все правильно. А заполняете вы её при помощи какого оператора/команды и при помощи какого клиента (консольный mysql, PHP-скрипт)? | |
|
|
|
|
|
|
|
для: cheops
(16.08.2009 в 20:33)
| | консольный mysql 5, установил с диска к книге Кузнецова и Симдянова)))
командой
load data infile 'f:\\000.txt'
replace into table a
lines starting by '' terminated by '\n';
П. С. В "Блокноте" кодировка при сохранении указана ANSI. В этом дело? | |
|
|
|
|
|
|
|
для: snakeRU54
(16.08.2009 в 20:37)
| | Дело ещё может быть в том, что кодировка консоли в Windows по умолчанию не cp1251, а cp866 (DOS), поэтому перед запуском mysql в консоли необходимо сменить кодировку при помощи команды
Вообще были сигналы о проблемах заполнения данных с русскими символами при помощи LOAD DATA INFILE, лучше, конечно, сформировать дамп и развертывать его при помощи mysql, не входя в диалоговый режим.
PS Проблему с кодировкой можно однозначно решить при помощи нового ключевого слова CHARACTER SET, однако, для этого нужна версия MySQL-сервера выше 5.0.38 или 5.1.17. У вас какая версия (SELECT VERSION())? | |
|
|
|
|
|
|
|
для: cheops
(16.08.2009 в 21:32)
| | 5.0.21-community-nt
Хотелось бы, в общих чертах, сцылочку или указание, где почитать о следующих вещах:
1. "...перед запуском mysql в консоли необходимо сменить кодировку при помощи команды... chch 1251"
2. "сформировать дамп и развертывать его при помощи mysql, не входя в диалоговый режим" | |
|
|
|
|
|
|
|
для: snakeRU54
(16.08.2009 в 22:25)
| | 2. Вот такой примерно файл называется дампом:
SET NAMES 'cp1251';
CREATE TABLE IF NOT EXIST 'a' (
'name' VARCHAR(255) NOT NULL,
'opisanie' MEDIUMBLOB
);
INSERT INTO `a` (`name`, `opisanie`) VALUES
('Имя 1', 'Описание 1'),
('Имя 2', 'Описание 2'),
('Name 3', 'Description 3');
|
Вот так он примерно загружается в БД
mysql -h localhost -u root -Pпароль имяБД <dump.sql
|
| |
|
|
|
|
|
|
|
для: snakeRU54
(16.08.2009 в 19:54)
| | Столбец opisanie, судя по примененному типу BLOB, вообще не предназначен для хранения текста. | |
|
|
|
|
|
|
|
для: Trianon
(16.08.2009 в 23:00)
| | Так, таблицу, как было указано, создал.
Ячейки в ней заполнились.
Но сработало в несколько отличном виде команды:
insert into a(name, opisanie) values ('имя 1', 'опис 2'), и так далле... Я имею ввиду, что кавычки в некоторым местах были не нужны - мне ошибку выдавалО.
В итоге получился адекватный текст.
Объявляю большую спасибу-благодарность.
Но тогда появляется проблема величиной в 30 000 терминов толкового словаря. Проблематично будет заполнять вручную)))
Со строкой
mysql -h localhost -u root -Pпароль имяБД <dump.sql
я что-то не разбираюсь.
"localhost" - путь к файл.тхт?
Пароля у меня тут нет. | |
|
|
|
|
|
|
|
для: snakeRU54
(17.08.2009 в 12:02)
| | >Но сработало в несколько отличном виде команды:
>insert into a(name, opisanie) values ('имя 1', 'опис 2'), и так далле... Я имею ввиду, что кавычки в некоторым местах были не нужны - мне ошибку выдавалО.
Вы посмотрите внимательно на кавычки. Они другие.
>Но тогда появляется проблема величиной в 30 000 терминов толкового словаря. Проблематично будет заполнять вручную)))
составьте php-скрипт. Или примените phpMyAdmin
>"localhost" - путь к файл.тхт?
localhost - адрес sql-сервера.
путь к файлу - dump.sql
>Пароля у меня тут нет.
Если пароля нет - можете вызвать клиент так: | |
|
|
|