Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: глюк с записью предопределенных значений.
 
 автор: victoor   (20.08.2006 в 21:37)   письмо автору
 
 

Стоит phpMyAdmin 2.8.1.1
если в поле в списке для предопределенных значений написать 'история','основа','рекрут' то почему-то устанавливается 'истори','','основа','рекрут'

я превращается в ','
тип данных в столбце SET
вот дамп структуры и данных (вдруг кто захочет посмотреть сам на это?):
CREATE TABLE `список_кланов` (
  `id_клана` int(11) NOT NULL default '0',
  `Название` varchar(30) NOT NULL,
  `Адрес_сайта` varchar(50) default NULL,
  `Адрес_иконки` varchar(50) default NULL,
  `Глава` varchar(20) default NULL,
  `Тип` set('история','основа','рекрут') NOT NULL default 'основа',
  `id_основы` int(11) default NULL,
  `Создан` date default NULL,
  `Дипломатия` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id_клана`)

) ENGINE=MyISAM DEFAULT CHARSET=cp1251 COMMENT='Список кланов';

-- 
-- Дамп данных таблицы `список_кланов`
-- 

INSERT INTO `список_кланов` (`id_клана`, `Название`, `Адрес_сайта`, `Адрес_иконки`, `Глава`, `Тип`, `id_основы`, `Создан`, `Дипломатия`) VALUES
(10, 'Говорящие с Ветром', 'http://www.windtalkers.net.ru/ViM', 'http://victor/images/clan_icon/10.gif', 'Koller', 'история', NULL, '2005-11-01', 0),
(11, 'Рекруты Говорящих с Ветром', 'http://govorjashije.jino-net.ru/', 'http://victor/images/clan_icon/11.gif', 'Noth1ng', 'история', 10, '2005-10-25', 0),
(20, 'King Clan', 'http://king-clan.ucoz.ru', 'http://victor/images/clan_icon/20.gif', 'King_Mag', 'история', NULL, '2005-11-19', 0),
(30, 'Children Of The Holy Shadow', 'http://shadows-clan.jino-net.ru/', 'http://d2.magegame.ru/klans1.gif', 'НеЧТО', 'основа', NULL, '2005-07-13', 0),
(31, 'Recruits Of Shadows', 'http://shadows.nova-uo.com/Recruits/', 'http://d2.magegame.ru/klans6.gif', 'Теневой_ГлавРек', 'рекрут', 20, '2006-06-11', 0);

Что за ерунда и как с этим бороться?

   
 
 автор: cheops   (21.08.2006 в 02:01)   письмо автору
 
   для: victoor   (20.08.2006 в 21:37)
 

А MySQL какая?

   
 
 автор: victoor   (21.08.2006 в 14:26)   письмо автору
 
   для: cheops   (21.08.2006 в 02:01)
 

MySQL - 5.0.22-community-nt

вообще русские имена столбцов прекрасно обрабатываются, раньше,когда поле Тип было простое текстовое, таблица нормально работала, и значение 'история' нормально отображалось.
А потом я захотел сделать чтобы просто выбирать значения, т.к. возможных значений всего 3, и так будет быстрее, если через phpMyAdmin записи вставлять.

   
 
 автор: cheops   (21.08.2006 в 22:23)   письмо автору
 
   для: victoor   (21.08.2006 в 14:26)
 

А если английские названия использовать?

   
 
 автор: victoor   (21.08.2006 в 22:54)   письмо автору
 
   для: cheops   (21.08.2006 в 22:23)
 

если данное поле сделать с англ. названием (Type) а значения использовать русские, то та же ошибка - 'история' превращается в 'истори',''
а использовать английские значения очень нехочется - сайт то русский....

   
 
 автор: Trianon   (22.08.2006 в 10:06)   письмо автору
 
   для: victoor   (21.08.2006 в 22:54)
 

Проблема заключается в том, что Вы создаете таблицу в кодировке cp1251. В ней буква 'я' имеет код 255. Символы с этим кодом нельзя использовать в качестве имен столбцов, элементов enum и set. Или переходите на utf-8 или отказывайтесь от слова история в пользу чего-то без буквы я

   
 
 автор: cheops   (22.08.2006 в 12:14)   письмо автору
 
   для: Trianon   (22.08.2006 в 10:06)
 

Хм... вообще в 5.0.22 все имена столбцов, таблиц, атрибутов вроде в UTF8 хранится должны, странно, что это не так... вопрочем лучше действительно не использовать русские названия столбцов, хотя бы ради обратной совместимости с более старыми базами данных.

   
 
 автор: Trianon   (22.08.2006 в 12:41)   письмо автору
 
   для: cheops   (22.08.2006 в 12:14)
 

Я проверил у себя на 5.0.18 . Беру дамп совершенно живой таблицы с default charset=utf-8 и меняю в нем этот charset на cp1251. таблица импортируется, но буквы 'я' в означенных местах разрушаются. Все действия выполнял через phpmyadmin. 2.8.0.3.
Про ограничения на работу с кодами 255 в именах столбцов в мануале php написано давно. И как я понимаю, от версии тут мало что меняется.

Возможно дело даже не в хранении, а во взаимодействии клиента с сервером.

   
 
 автор: cheops   (22.08.2006 в 13:11)   письмо автору
 
   для: Trianon   (22.08.2006 в 12:41)
 

Скорее всего phpMyAdmin их рушит - сама база должна хранить все служебные имена в UTF8... Хотя тоже странно, новые версии phpMyAdmin при работе с новыми же версиями MySQL вообще всё представление в UTF8 держит... любопытно нужно будет покапаться с этим как-нибудь...

   
 
 автор: Trianon   (22.08.2006 в 13:26)   письмо автору
 
   для: cheops   (22.08.2006 в 13:11)
 

Самое весёлое, что mysql-Front споткнулся при экспорте из этой исходной чистой таблицы.
Invalid utf8 character string: 'истори' (1300) - SELECT `id`,`история`,`выбор` FROM `utfdb`.`utftab` ORDER BY `id`;
Так что не только phpmyadmin...

   
 
 автор: victoor   (23.08.2006 в 02:24)   письмо автору
 
   для: Trianon   (22.08.2006 в 10:06)
 

хм... ладно, будет просто текстовое поле. Тогда значение ему с буквой Я можно присвоить нормально.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования