Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблема со спецсимволами / 22 сообщений из 22, страница 1 из 1
27.01.2004, 11:52
    #32388813
denof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
Есть два хостинга на одном MySQL 4.0.17, на другом MySQL 3.23.56
Есть табличка
CREATE TABLE `varchar_test` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(64) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) TYPE=MyISAM ROW_FORMAT=DYNAMIC AUTO_INCREMENT=5 ;

INSERT INTO `varchar_test` VALUES (1, 'test');
INSERT INTO `varchar_test` VALUES (2, ' test ');
INSERT INTO `varchar_test` VALUES (3, '¤test¤');
INSERT INTO `varchar_test` VALUES (4, '©test©');

При выполнении этого запроса на MySQL 4, все ок...
А на MySQL 3
Ответ MySQL:
#1062 - Duplicate entry '©test©' for key 2

Насколько я понял, проблема в том что мускул 3, считает все спецсимволы одинаковыми! ;(
Кто виноват, куда копать, ну или где почитать про это?
...
Рейтинг: 0 / 0
27.01.2004, 12:20
    #32388860
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
не правильно хранить © в базе нужно ©
Felix
...
Рейтинг: 0 / 0
27.01.2004, 12:21
    #32388865
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
мдя....
Код: plaintext
нужно ©
Felix
...
Рейтинг: 0 / 0
27.01.2004, 12:22
    #32388866
©Felix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
туплю.... & copy; только без пробела....
Felix
...
Рейтинг: 0 / 0
27.01.2004, 12:35
    #32388889
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
почему это неправильно?

думаю, дело в кодировке, надо посмотреть во что превращаются эти ©, не в вопросительные ли знаки. и сравнить какие кодировки базы там и там
...
Рейтинг: 0 / 0
27.01.2004, 12:40
    #32388899
denof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
там кои8р , и здесь кои8р...
...
Рейтинг: 0 / 0
27.01.2004, 15:22
    #32389252
skol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
CREATE TABLE `varchar_test` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` binary varchar(64) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) TYPE=MyISAM ROW_FORMAT=DYNAMIC AUTO_INCREMENT=5 ;
...
Рейтинг: 0 / 0
27.01.2004, 15:46
    #32389318
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
Есть у меня подозрение что в этой строчке
INSERT INTO `varchar_test` VALUES (1, 'test');
1 - ни что иное как задание значение столбцу который является AUTO_INCREMENT. Вывод - надо так:
INSERT INTO `varchar_test`(Name) VALUES ('test');

mahoune
...
Рейтинг: 0 / 0
27.01.2004, 16:00
    #32389361
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
махоуни, кажись, в автоинкремент можно явно писать что хочешь, инкремент происходит если нулл писать... скорее всего дело в ©

пишет же #1062 - Duplicate entry ' ©test© ' for key 2

настаиваю, что дело в кодировках. ты разбираешься в них, уточни, действительно ли у него "там кои8р , и здесь кои8р..."

после того как ничего не поможет, придется пользоваться советом Felixа. тоьлко он мне не нравится, потому что запрос select * from varchar_test where name like '%copy%' будет находить и эти © тоже
...
Рейтинг: 0 / 0
27.01.2004, 16:06
    #32389379
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
А пофиг, эти два символа не могут иметь один и тот-же код в одной и той же кодировке. MySQL преобразрваний никаких не производит.

mahoune
...
Рейтинг: 0 / 0
27.01.2004, 16:11
    #32389392
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
а если посмотреть, что реально внеслось в табличку, '¤test¤'?

skol, что делает binary?
...
Рейтинг: 0 / 0
27.01.2004, 18:09
    #32389637
skol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
Гы, по поводу что MySQL не делает никаких преобразований неправда ваша!
Эти преобразования какраз и зависят от чарсета установленного для базы.
Преобразования ети делаются при поиске и упорядочивании и называются COLLATION TABLE
за счет этого MySQL при like 'абвг' найдет и АбВг и АБВГ и абвг,
т.е. в MySQL 3.23 символы © в текущем коллейшене равны

BINARY запрещает такие вещи, и сравнение происходит как для массива байтов.

ЗЫ: Точно не помню, но можно попробовать не поле делать бинарным а индекс
UNIQUE KEY `name` (binary `name`)
...
Рейтинг: 0 / 0
27.01.2004, 20:18
    #32389788
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
2 skol, а вот тут твоя не права!
Сами данные хранятся без изменения. А все настройки CHARSET как раз и влияют на работу функций UPPER, LOWER, LIKE...

Потому fedd прав, давайте же скорее смотреть а что же у нас в базе хранится!

mahoune
...
Рейтинг: 0 / 0
28.01.2004, 11:48
    #32390385
skol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
Ну дык я об этом и говорил, я имел ввиду что оно не меняет сами данные, но меняет работу с ними, поэтому и проявляется такой side-effect

ЗЫ: можно просто попробовать
select UPPER('¤test¤'), UPPER('©test©'), UPPER('¤test¤') = UPPER('©test©');

И посмотреть к чему это приведет обе строки
...
Рейтинг: 0 / 0
28.01.2004, 12:03
    #32390424
denof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
2 skol: ругается на binary в обоих случаях...
2 fed: как посмотеть во что превращаются эти ©?

кодировки смотрел командой \s из консоли
Client characterset: koi8_ru
Server characterset: koi8_ru
...
Рейтинг: 0 / 0
28.01.2004, 12:11
    #32390443
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
У меня при работе с консоли значки © преобразовались во что-то немыслимое и консоль решила выдать мне help

А вот символы ¤ преобразовались в точки

Но это все в консоли...


mahoune
...
Рейтинг: 0 / 0
28.01.2004, 12:25
    #32390483
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
Имеем ASCII: © - 169; ¤ - 164
Делаем:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
insert into test01 values ( 2 ,concat(char( 164 ),'test',char( 169 )));
 -- Получаем:
 
mysql> select * from test01;
+ ------+--------+
 
| id   | name   |
+ ------+--------+
 
|     2  | ¤test© |
+ ------+--------+
 
 1  rows in set ( 0 . 00  sec)
mahoune
...
Рейтинг: 0 / 0
29.01.2004, 10:47
    #32391909
denof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
insert into varchar_test values (1,concat(char(164),'test',char(164)));
insert into varchar_test values (2,concat(char(169),'test',char(169)));

#1062 - Duplicate entry '©test©' for key 2
Ну что с этими символами делать... мну нужно до февраля перекинуть базу на MySQL 3... а никак не выходит...
...
Рейтинг: 0 / 0
29.01.2004, 11:47
    #32392072
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
А вот с BINARY у меня все нормально - проверь еще раз!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
CREATE TABLE `varchar_test01` ( 
`id` int( 10 ) unsigned NOT NULL auto_increment, 
`name` varchar( 64 ) BINARY NOT NULL default '', 
PRIMARY KEY (`id`), 
UNIQUE KEY `name` (`name`) 
) TYPE=MyISAM ROW_FORMAT=DYNAMIC AUTO_INCREMENT= 5  ; 

insert into varchar_test01 values ( 1 ,concat(char( 164 ),'test',char( 164 )));
insert into varchar_test01 values ( 2 ,concat(char( 169 ),'test',char( 169 )));

mysql> select * from varchar_test01;
+ ----+--------+
 
| id | name   |
+ ----+--------+
 
|   2  |  9560 ;test 9560 ; |
|   1  | єtestє |
+ ----+--------+
 
 2  rows in set ( 0 . 00  sec)
mahoune
...
Рейтинг: 0 / 0
29.01.2004, 11:49
    #32392078
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
Код: plaintext
1.
 9560 ; - эту фигню уже сам sql.ru поставил - там один символ! :)))
mahoune
...
Рейтинг: 0 / 0
30.01.2004, 12:15
    #32393462
denof
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
Все заработало!

2ALL: спасиб всем кто откликнулся!
2mahoune: Готов проставить пиво! ;)
...
Рейтинг: 0 / 0
02.02.2004, 15:17
    #32395517
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема со спецсимволами
А пиво это рулез! Достаточно того, что просто готов проставить!

. http://sql.ru/]mahoune
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Проблема со спецсимволами / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]