Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mysql.exe - Incorrect string value, при загрузке БД из файла 
V
    Опции темы
nc30
Дата 16.9.2010, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: нет
Всего: 8



Использую:
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)
под Windows XP SP2 Pro Rus.

При установке MySQL указал поддержку multilingual.

При загрузке БД из файла:
Код

DROP DATABASE IF EXISTS passport_db;

CREATE DATABASE passport_db DEFAULT CHARACTER SET utf8;

USE passport_db;

CREATE TABLE Address (
    address_id INT UNSIGNED NOT NULL UNIQUE,
    street VARCHAR(255) NOT NULL,
    house VARCHAR(255) NOT NULL,
    flat VARCHAR(255) NOT NULL,
    PRIMARY KEY (address_id)
) ENGINE=InnoDB;

...

SET NAMES utf8;

INSERT INTO Address (address_id, street, house, flat) VALUES (1, "пр. Ветеранов", "25", "16");

выдается ошибка:
ERROR 1366 (HY000) at line 38: Incorrect string value: '\xEF\xF0. \xC2\xE5...' for column 'street' at row 1
(соответствует строке INSERT INTO Address (address_id, street, house, flat) VALUES (1, "пр. Ветеранов", "25", "16");)

Пробовал менять кодировку в SET NAMES на cp1251 и koi8r. В этом случае база создается, но вместо кириллицы выводится псевдографика.

Пробовал добавлять в БД строки с кириллицей программно - получалось. Но при последующем SELECT из mysql-консоли - опять в выводе псевдографика.

Как решить проблему?

Это сообщение отредактировал(а) nc30 - 16.9.2010, 18:30
PM MAIL   Вверх
skyboy
Дата 16.9.2010, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



после создания таблицы Address какие у её полей charset? utf8 ли?
PM MAIL   Вверх
nc30
Дата 17.9.2010, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: нет
Всего: 8



Цитата(skyboy @ 16.9.2010,  21:30)
после создания таблицы Address какие у её полей charset? utf8 ли?

Честно говоря - не в курсе, т. к. только начал изучение SQL.

Почитав refman попробовал следующее:
Код

CREATE TABLE Address (
    ...
    street VARCHAR(255) NOT NULL,
    ...
) ENGINE=InnoDB CHARACTER SET utf8;

ERROR 1366 (HY000) at line 40: Incorrect string value: '\xEF\xF0. \xC2\xE5...' for column 'street' at row 1
Код

CREATE TABLE Address (
    ...
    street VARCHAR(255) CHARACTER SET utf8 NOT NULL,
    ...
) ENGINE=InnoDB;

ERROR 1366 (HY000) at line 40: Incorrect string value: '\xEF\xF0. \xC2\xE5...' for column 'street' at row 1
Код

    street VARCHAR(255) NOT NULL CHARACTER SET utf8,

ERROR 1064 (42000) at line 7: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CHARACTER SET utf8,
    house VARCHAR(255) NOT NULL,
    flat VARCHAR(255) NOT N' at line 3

Если не сложно, помогите с синтаксисом  smile 
PM MAIL   Вверх
nc30
Дата 19.9.2010, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: нет
Всего: 8



После игр с кодировками и лебедевским декодером, удалось таки найти решение проблемы (для Windows XP). Привожу по шагам, может кому-нибудь пригодится  smile 

1) В sql-файле после создания базы в кодировке 'utf8' перед вставкой строк прописал SET NAMES 'cp1251'.
Код

DROP DATABASE IF EXISTS passport;

CREATE DATABASE passport DEFAULT CHARACTER SET utf8;

USE passport;

CREATE TABLE Address (
    address_id INT UNSIGNED NOT NULL UNIQUE,
    street VARCHAR(255) NOT NULL,
    house VARCHAR(255) NOT NULL,
    flat VARCHAR(255) NOT NULL,
    PRIMARY KEY (address_id)
) ENGINE=InnoDB;

SET NAMES 'cp1251';

INSERT INTO Address (address_id, street, house, flat) VALUES (1, "Ветеранов пр.", "25", "16");
INSERT INTO Address (address_id, street, house, flat) VALUES (2, "Капитана Воронина ул.", "29", "18");
INSERT INTO Address (address_id, street, house, flat) VALUES (3, "Энтузиастов пр.", "30", "211");

2) Обновил базу.
Код

shell> mysql -u root -p < passport.sql

3) После установления соединения выполнил SET NAMES 'cp866'.
Код

shell> mysql -u root -p
...

mysql> set names 'cp866';
Query OK, 0 rows affected (0.00 sec)

mysql> use passport;
Database changed
mysql> select * from address;
+------------+-----------------------+-------+------+
| address_id | street                | house | flat |
+------------+-----------------------+-------+------+
|          1 | Ветеранов пр.                   | 25    | 16   |
|          2 | Капитана Воронина ул.                 | 29    | 18   |
|          3 | Энтузиастов пр.                 | 30    | 211  |
+------------+-----------------------+-------+------+
3 rows in set (0.00 sec)

Немного кривовато, но вполне себе читабельно  smile 
 

Это сообщение отредактировал(а) nc30 - 19.9.2010, 15:22
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.1045 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.