Задавайте вопросы, мы ответим
Вы не зашли.
У нас сейчас стоит 5.0.18
в этой версии есть как минимум одна раздражающая бага, при попадании в список enum какого либо слова с русской буквой "я" - таблица перестает работать. Когда то читал, что это официально признанный баг и они его обещали пофиксить.
В установленном на винде 5.1.22 данная бага не воспроизводится, хотя это может быть по нескольким причинам, либо багу исправили либо например не создается аналогичный косплект условий (например кодировка сервера другая или еще какая-нть характеристика)
Попытался сейчас посмотреть пофикисили или нет - нифига не нашел, ни упоминаний про баг ни упоминаний про то пофиксили или нет. Поэтому вопроса два - если кто то разбирается в том как найти подобную информацию в материалах mysql - помогите найти, пожалста...
1а. почти в каждом билде 5.1.1 - 5.1.22 есть "несовместимые изменения" со старыми версиями - есть ли где то общий список не совместимостей между 5.1.22 и например 5.1.1 (или даже 5.0.45) - или единственный способ их узнать - пробегаться по хистори и выписывать из каждого билда,
вопрос 2, косвенно вытекающий из 1. Есть желание сервер отапдейтить, особенно если это избавит от вышеупомянутого глюка, но тут другая непонятка, какую версию ставить? Сейчас есть GA (<-что это) 5.0.45 и RC 5.1.22
Причем даже купленная не так давно книга по mysql часто ссылается на фичи mysql 5.1 хотя, если я правильно понял у неё даже не было ещё релиза. Насколько потенциально-опасно ставить 5.1.22 или все таки не стоит рисковать и ограничится 5.0.45?
Отредактированно Shopen (02.11.2007 22:50:38)
Неактивен
самый простой способ узнать о наличии баги - проверить есть она или нет
1. наверное надо проходить по билдам, другого способа не знаю
2. с 5.1 рисковать не стоит, там есть баги неисправленные, которые могут в продакшене помешать очень сильно. Дождитесь релиза, который ожидается в конце года, до тех пор используйте 5.0
Неактивен
А как проверить то?
это же нужно машину, на которой поднимать последовательно версии mysql - и там проверть жива еще бага или нет?
весёлое занятие
на нашем 5.0.18 она есть - проверено
Неактивен
Если напишете, как воспроизвести багу - могу попробовать на 5.0.32 / 5.0.45.
Неактивен
Достаточно проверить на последней из серии 5.0. Конечно, если сможете найти багу на bugs.mysql.com, то там будет и патч и версия, но бывает, что баги фиксятся неявно при внесении общих улучшений кода или при исправлении других баг. Если нужна точная версия - то можно ее найти бисекцией за log(числа версий) количество переборов пусть в 5.0.18 есть, в 5.1.22 нет - делите интервал пополам - проверяете в 5.0.40, затем оставшийся интервал пополам.
Неактивен
Проверка сама по себе очень простая:
1. открываем QB
2. пишем следующий запрос:
CREATE TABLE `enum_bug` ( `e` enum('я','ты','он','она') NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=cp125
3. смотрим что получилось
SHOW CREATE TABLE enum_bug
Если результат совпадает с тем чего хотели - значит бага нет. если не совпадает - есть.
на локальной машине у меня все ОК (win, RC 5.1.22),
на сервере (SUSE SLED 10, 5.0.18) результат такой:
CREATE TABLE `enum_bug` ( `e` enum('','','ты','он','она') NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
как видно - буква я попросту исчезла из определения.
дальнейшая работа с таблицей у которой такое описание - невозможна.
если в списке определений enum вместо ('я','ты','он','она') написать что-нибудь типа enum('аня','миша','соня') то все становится настолько плохо, что после создания таблицы запрос show create table даже результата вернуть не может:
ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect...
Проверьте, если не трудно на 5.0.45
Отредактированно Shopen (03.11.2007 01:49:29)
Неактивен
В 5.0.22 бага есть
mysql> set names koi8r;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE `enum_bug` ( `e` enum('я','ты','он','она') NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Query OK, 0 rows affected (0.00 sec)
mysql> show create table enum_bug;
+----------+-------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+----------+-------------------------------------------------------------------------------------------------------------+
| enum_bug | CREATE TABLE `enum_bug` (
`e` enum('','','ты','он','она') NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 |
+----------+-------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.22 |
+-----------+
1 row in set (0.00 sec)
mysql> CREATE TABLE `enum_bug2` ( `e` enum('аня','ты','он','она') NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
Query OK, 0 rows affected (0.01 sec)
mysql> show create table enum_bug2;
+-----------+----------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-----------+----------------------------------------------------------------------------------------------------------------+
| enum_bug2 | CREATE TABLE `enum_bug2` (
`e` enum('ан','','ты','он','она') NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 |
+-----------+----------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
Неактивен
зачем koi8r? или это не имеет значения?
я именно поэтому написал про QB - из него запрос насколько я понимаю уходит на сервер в cp1251.
может поэтому вторая таблица, пусть и обглоданная но вернулась от сервера. У меня то вообще exception возвращается. Хотя возможно что к 22 билду ЭТУ часть бага поправили.
Неактивен
Кстати из за safe-обертки не замечал.
Оказывается второй, приведенный мной запрос приводит к крэшу сервера, щас проверял когда - mysql-сервер рестартанул..
во блин
Неактивен
koi8r - так как у меня консоль в koi8r, QB ИМХО отправляет в utf8, но это не важно (важно только совпадение SET NAMES и кодировки в которой отправлено), так как создается таблица в той кодировке, в которой объявлена
Неактивен
а что в 5.0.45?
Неактивен
[paulus.ru] root test > CREATE TABLE `enum_bug` ( -> `e` enum('я','ты','он','она') NOT NULL -> ) ENGINE=MyISAM DEFAULT CHARSET=cp1251; Query OK, 0 rows affected (0.01 sec) [paulus.ru] root test > SHOW CREATE TABLE enum_bug\G *************************** 1. row *************************** Table: enum_bug Create Table: CREATE TABLE `enum_bug` ( `e` enum('я','ты','он','она') NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=cp1251 1 row in set (0.00 sec) [paulus.ru] root test > SELECT VERSION(); +------------------------+ | VERSION() | +------------------------+ | 5.0.45-Debian_1ubuntu3 | +------------------------+ 1 row in set (0.01 sec)
Хочу заметить, что непоявление буквы "я" может быть связано еще с Вашим
терминалом. Дело в том, что "я" в cp1251 - это ASCII 255, который по стандарту
не передается через telnet-соединения (без специальной поддержки). Поэтому
если Вы смотрите в cp1251-telnet-подобном терминале, Вы можете ее просто
не увидеть.
Неактивен