1. SQL / Говнокод #2953

    −862

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    CREATE TABLE IF NOT EXISTS `tbl_game` (
      `game_id` bigint(20) NOT NULL AUTO_INCREMENT,
      `game_name` varchar(150) CHARACTER SET cp1251 COLLATE cp1251_ukrainian_ci NOT NULL DEFAULT '',
      `upload_date` bigint(20) NOT NULL DEFAULT '0',
      `magazine_id` bigint(20) NOT NULL DEFAULT '0',
      `producer_id` int(11) NOT NULL DEFAULT '0',
      `dir` varchar(60) NOT NULL DEFAULT '',
      PRIMARY KEY (`game_id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=538 ;

    Вот наткнулся на такую вот говенную таблицу.

    Для некоторых случаев возможностей utf-8 видно не хватило, и пришлось использовать "продвинутую" cp1251

    Запостил: Yngvie, 07 Апреля 2010

    Комментарии (13) RSS

    • а может, с "COLLATE cp1251_ukrainian_ci" сортировка идет не так, как с utf8? это просто мое предположение...
      Ответить
      • Интересная мысль. С cp1251_general_ci действительно могут быть проблемы с украинским алфавитом. Но, по идее, Юникод лишен этих недостатков )
        Ответить
      • Мне тоже кажется, что utf-8 с сортировкой бы справился. К тому же, в этой таблице нету украинских названий, только русские.

        И в любом случае, использовать разные кодировки для столбцов одной таблицы попахивает.
        Ответить
      • Так оно и есть, судя по таблице уникода. Для русского проблема только с буквой Ё.
        javascript:alert("АЁЯаёя".split('').sort());//Ё,А,Я,а,я,ё
        Ответить
    • Есть ещё вариант, что ниасилятор каким-то образом прозевал, где выставляется дефолтная кодировка базы или таблицы, и установил для одного поля кодировку вручную. Для `dir`, где, надо полагать, расположены пути к файлам, и UTF-8 ведёт себя нормально, поэтому по принципу "работает - не трогай" он не стал ничего там выставлять. Но это только версия, писанная вилами по воде.
      Ответить
    • также очень нравится: NOT NULL DEFAULT ''
      Ответить
    • Это может быть шлюзовая таблица для импорта разной внешней кривизны
      Ответить
    • "ENGINE=MyISAM" - вот реальный говнокод, каждой таблице свою ынжину, млин. Потом половина таблиц работают с транзакциями, половина - нет. Мыскль такой мыскль...
      Ответить
      • И этому потворствуют говнохостеры:

        Характеристики MySQL.

        Версия: 5.0.x. Основная кодировка: cp1251 (Windows).

        Поддерживается только тип таблиц MyISAM, невозможно создание хранимых функций, процедур, триггеров и представлений.

        // masterhost.ru
        Ответить
        • Эх, а VPS у него бодрячком, хоть и дорогой как скотина... Энивей, я разочарован.
          Ответить
    • Да тут полно ошибок. Вот к примеру это "upload_date` bigint(20)". В чем измеряется date? Даже если это timestamp, то никак не bigint(20).
      Ни для одного поля не указано UNSIGNED - они что, все отрицательными могут быть? К тому же bigint(20) - это нереально дофига.
      Ответить

    Добавить комментарий