sql >> Database >  >> RDS >> Mysql

mySQL:utf8-tekenset op indextabel en dubbele sleutelfout

U moet de sortering utf8_unicode_ci . gebruiken wanneer je Duitse karakters gebruikt, volgens de discussie in deze bug:Bug #39816 Duitse collatie onder utf8_unicode_ci is onjuist .

Ondanks de titel van die bug, heb ik dit zojuist getest op 5.6.15, en je testcase werkt, terwijl de standaard unicode-sortering niet werkt:

CREATE TABLE `test` (
  `id` varchar(5) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 DEFAULT COLLATE=utf8_unicode_ci;

INSERT INTO `test` (`id`) VALUES ('das'), ('daß');

PS:Ik raad je aan om in een ontwikkelomgeving dezelfde versies van alle software te gebruiken als je productieomgeving, of in ieder geval dezelfde hoofdversie te delen. U zult ongetwijfeld andere onverenigbaarheden tegenkomen als u zich ontwikkelt in 5.5 en vervolgens probeert te implementeren naar 5.0.



  1. Hoe DateTime naar VarChar . te converteren

  2. PostgreSQL voor Windows ontwikkelen, deel 1

  3. Heeft SQL Server 2005 een equivalent van het ENUM-gegevenstype van MySql?

  4. MySQL - SELECTEER ... WHERE id IN (..) - juiste volgorde