2015-04-28 6 views
3

Я узнал, что когда я запрашиваю одну из своих таблиц, он чувствителен к регистру, поэтому я попытался изменить сортировку (я использую Workbench в окнах). IКак изменить сортировку, чтобы сделать регистр mysql нечувствительным

right clicked on the table -> alter table -> collation 
-> changed from utf8mb4_default to utf8mb4_general_ci 

Но это не сработало, и запросы по-прежнему чувствительны к регистру. и когда я

right click on the table -> alter table -> collation 

является utf8mb4_default

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

Тип столбца VARBINARY, я попытался это:

MySQL case insensitive search on varbinary field?

, но это занимает много времени, это не приемлемо.

Это т создать заявление:

CREATE TABLE `page` (
    `page_id` int(8) unsigned NOT NULL AUTO_INCREMENT, 
    `page_namespace` int(11) NOT NULL DEFAULT '0', 
    `page_title` varbinary(255) NOT NULL DEFAULT '', 
    `page_restrictions` tinyblob NOT NULL, 
    `page_counter` bigint(20) unsigned NOT NULL DEFAULT '0', 
    `page_is_redirect` tinyint(1) unsigned NOT NULL DEFAULT '0', 
    `page_is_new` tinyint(1) unsigned NOT NULL DEFAULT '0', 
    `page_random` double unsigned NOT NULL DEFAULT '0', 
    `page_touched` varbinary(14) NOT NULL DEFAULT '', 
    `page_links_updated` varbinary(14) DEFAULT NULL, 
    `page_latest` int(8) unsigned NOT NULL DEFAULT '0', 
    `page_len` int(8) unsigned NOT NULL DEFAULT '0', 
    `page_content_model` varbinary(32) DEFAULT NULL,  
    PRIMARY KEY (`page_id`), 
    UNIQUE KEY `name_title` (`page_namespace`,`page_title`), 
    KEY `page_random` (`page_random`), 
    KEY `page_len` (`page_len`), 
    KEY `page_redirect_namespace_len` (`page_is_redirect`,`page_namespace`,`page_len`), 
    KEY `idx_page_page_is_new` (`page_is_new`), 
    KEY `idx_page_page_title_is_new` (`page_title`,`page_is_new`) 
) ENGINE=InnoDB AUTO_INCREMENT=44062999 DEFAULT CHARSET=utf8mb4; 

Любые другие предложения?

+0

Таблица по умолчанию не меняет столбцы. _ci означает case_insensitive. 'VARBINARY' эффективно чувствителен к регистру, но испортит другие вещи. Пожалуйста, предоставьте 'SHOW CREATE TABLE'. –

ответ

2

Похоже, у вас есть следующие варианты:

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

Если вы действительно хотите, чтобы столбец всегда бывает в чувствительных, я бы сказал, что пойти на вариант 1.

+0

Я пробовал это, я получил эту ошибку: Ошибка 1071: Указанный ключ был слишком длинным; Максимальная длина ключа составляет 767 байт. Я попытался изменить его на varchar (1000). Я включил innodb_large_prefix, воспользовавшись справкой по этой ссылке: http://mechanics.flite.com/blog/2014/07/29/using-innodb-large-prefix-to-avoid-error1071/. Это не сработало. Это все еще дает мне ошибку. – Andi

+0

Получаете ли вы ту же ошибку при использовании TEXT или LONGTEXT для поля назначения? – ArashPred

+0

Я получаю эту новую ошибку: BLOB/TEXT столбец «page_title» не может иметь значение по умолчанию – Andi

0

В mysql имеется сопоставление для каждого столбца в дополнение к общей сортировке таблицы. Вам нужно будет изменить сортировку для каждого отдельного столбца.

(я считаю, что общая таблица параметров сортировки определяет параметры сортировки по умолчанию, если создать новый столбец, но не цитируйте меня на этом.)

+0

В рабочем месте сортировка для каждого столбца неактивна и указана «Таблица по умолчанию», которая показывает, что я не могу ее изменить. – Andi

+0

Я также заметил, что тип данных столбца является varbinary, я пытался изменить его на varchar, но этого не может быть. Это дамп mysql wikipedia, который я использую, на странице таблицы. – Andi

+0

Извините, я не знаком с верстаком (обычно я использую phpMyAdmin). Любая возможность, что ваш пользователь mysql не имеет прав на изменение определений столбцов в mysql? –

Смежные вопросы