błędów MSG na mysql nielegalne mieszanka sortowania (utf8_unicode_ci, bezpośrednia) i (utf8_general_ci, bezpośrednia) dla operacji „=”nielegalne mieszanka sortowania (utf8_unicode_ci, bezpośrednia) i (utf8_general_ci, bezpośrednia) dla operacji „=”
Przeszedłem kilka innych postów i nie byłem w stanie rozwiązać tego problemu. Część dotknięte jest coś podobnego do tego:
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;
Procedura przechowywana używam to:
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
ja testował z php, ale ten sam błąd jest podawany z SQLyog. Testowałem również odtwarzanie całego DB, ale na nic.
Każda pomoc będzie mile widziane.
Twoja pierwsza opcja była odpowiedź szukałem =). Dziękuję Ci. – Manatax
Możliwe jest również dodanie 'COLLATE utf8_unicode_ci' do stałych łańcuchowych: ' SET @EMAIL = '[email protected]' COLLATE utf8_unicode_ci; '. Jest to szczególnie przydatne, jeśli uruchamiasz skrypt z konsoli, w której domyślne kodowanie konsoli dotyczy stałego zestawienia ciągów znaków. – gaborsch
Lub usuń bazę danych i utwórz nowe za pomocą utf8_general_ci; porównanie. – Oleksii