Fehlernachricht auf MySql: Illegal Mischung aus Sortierungen (utf8_unicode_ci, IMPLICIT) und (utf8_general_ci, IMPLICIT) für den Betrieb '='Illegal Mischung aus Sortierungen (utf8_unicode_ci, IMPLICIT) und (utf8_general_ci, IMPLICIT) für den Betrieb '='
Ich habe mehrere andere Beiträge durchgesehen und war nicht in der Lage, dieses Problem zu lösen. Der Teil betroffen ist etwas ähnlich wie diese:
CREATE TABLE users (
userID INT UNSIGNED NOT NULL AUTO_INCREMENT,
firstName VARCHAR(24) NOT NULL,
lastName VARCHAR(24) NOT NULL,
username VARCHAR(24) NOT NULL,
password VARCHAR(40) NOT NULL,
PRIMARY KEY (userid)
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE products (
productID INT UNSIGNED NOT NULL AUTO_INCREMENT,
title VARCHAR(104) NOT NULL,
picturePath VARCHAR(104) NULL,
pictureThumb VARCHAR(104) NULL,
creationDate DATE NOT NULL,
closeDate DATE NULL,
deleteDate DATE NULL,
varPath VARCHAR(104) NULL,
isPublic TINYINT(1) UNSIGNED NOT NULL DEFAULT '1',
PRIMARY KEY (productID)
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE productUsers (
productID INT UNSIGNED NOT NULL,
userID INT UNSIGNED NOT NULL,
permission VARCHAR(16) NOT NULL,
PRIMARY KEY (productID,userID),
FOREIGN KEY (productID) REFERENCES products (productID) ON DELETE RESTRICT ON UPDATE NO ACTION,
FOREIGN KEY (userID) REFERENCES users (userID) ON DELETE RESTRICT ON UPDATE NO ACTION
) ENGINE = INNODB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Die gespeicherte Prozedur ich benutze, ist dies:
CREATE PROCEDURE updateProductUsers (IN rUsername VARCHAR(24),IN rProductID INT UNSIGNED,IN rPerm VARCHAR(16))
BEGIN
UPDATE productUsers
INNER JOIN users
ON productUsers.userID = users.userID
SET productUsers.permission = rPerm
WHERE users.username = rUsername
AND productUsers.productID = rProductID;
END
ich mit php testete, aber der gleiche Fehler mit SQLyog gegeben. Ich habe auch getestet, die gesamte DB neu zu erstellen, aber nicht gut.
Jede Hilfe wird sehr geschätzt.
Ihre erste Option war die Antwort, die ich für = suchte). Vielen Dank. – Manatax
Es ist auch möglich, String-Konstanten 'COLLATE utf8_unicode_ci' hinzuzufügen: ' SET @EMAIL = '[email protected]' COLLATE utf8_unicode_ci; '. Dies ist besonders nützlich, wenn Sie ein Skript von einer Konsole aus ausführen, wobei die Standardcodierung der Konsole für die Sortierung der Zeichenfolgenkonstanten gilt. – gaborsch
Oder Datenbank löschen und mit utf8_general_ci neu erstellen; Kollation. – Oleksii