php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.05.2007, 13:10  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard Illegal mix ...

Hallo Leute,

ich habe folgende function in MySQL 5.0.20 erstellt:

DELIMITER $$
DROP FUNCTION IF EXISTS `db`.`fnGetEinkauf` $$
CREATE FUNCTION `db`.`fnGetVerkauf` (param_nr varchar(50)) RETURNS INT
BEGIN
DECLARE bestand INT;
SELECT sum(anzahl) into bestand
FROM stock
WHERE stock.nr = param_nr;
return bestand;
END $$
DELIMITER ;

Die Funktion soll anhand einer alphanumerischen Artikelnummer einen Bestand zurückgeben. Rufe ich die Funktion mittels:

SELECT fnGetEinkauf("A01")

auf, erhalte ich diese Fehlermeldung hier:

Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation '='

Was muss ich ändern?
inu ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 01.05.2007, 14:04  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Was glaubst du könnte die Fehlermeldung
Zitat:
Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_general_ci,IMPLICIT) for operation '='
denn übersetzt heißen und welche zwei genannten "Collations" könnten denn in der
Zitat:
operation '='
gemeint sein?
Zergling-new ist offline   Mit Zitat antworten
Alt 01.05.2007, 14:10  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard

nunja, sicher ist "stock.nr = param_nr; " gemeint. die Tabelle "stock" ist mit 'latin1_german1_ci' hinterlegt.

Wie kann ich jedoch Einfluss auf den Parameter "param_nr" nehmen?

Vielen Dank
inu ist offline   Mit Zitat antworten
Alt 01.05.2007, 14:11  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Welche Zeichensätze sind denn für die Spalten `nr` und `param_nr` hinterlegt? Die können ja durchaus auch andere sein, als die der Tabelle.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.05.2007, 14:12  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.633
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo inu,

die Meldung sagt doch bereits, dass die beiden Spalten/Tabellen unterschiedliche Zeichensätze verwenden. Behebst du das, wird das funktionieren.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 01.05.2007, 14:18  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard

Welche beiden Spalten bzw. Tabellen meinst Du? Ich habe doch nur die Tabelle "stock". Und hier ist sowohl die Tabelle selbst als auch die Spalte mit "latin1_german1_ci" definiert.

Der Vergleichswert ist doch aber ein Übergabeparameter an die Funktion!
inu ist offline   Mit Zitat antworten
Alt 01.05.2007, 14:50  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Dann ist wohl die Kollation deiner Verbindung latin1_general_ci.
Zergling-new ist offline   Mit Zitat antworten
Alt 01.05.2007, 16:34  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard

und wie kann ich die Kollation der Verbindung ändern? Ich nutze den MySQL Query-Browser

Vielen Dank
inu ist offline   Mit Zitat antworten
Alt 01.05.2007, 17:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Bevor du die Verbindungs-Kollation jedes mal änderst (wenn es denn überhaupt daran liegt), würde ich lieber die Kollation der Tabelle anpassen. Oder gibt es einen bestimmten Grund, warum du latin1_german1_ci verwendest?
Zergling-new ist offline   Mit Zitat antworten
Alt 01.05.2007, 19:05  
inu
Erfahrener Benutzer
 
Registriert seit: 20.11.2003
Beiträge: 244
inu
Standard

Nun, alle meine Tabellen (knapp 100 Stück) in der Datenbank sind auf " latin1_german1_ci" eingestellt
inu ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Unknown: The session id contains illegal characters PHP Tipps 2007 77 17.09.2006 04:00
Skript "tarnen"? Off-Topic Diskussionen 17 07.08.2005 19:42
Suche Coder Beitragsarchiv 19 05.08.2005 17:30
[Erledigt] einfacher SELECT funktioniert nicht! (Illegal mix of coll..) 18inch Datenbanken 1 10.07.2005 19:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
illegal mix of collations, illegal mix of collations (latin1_general_ci,implicit) and (latin1_german1_ci,implicit) for operation \'=, illegal mix of collations (latin1_general_ci,implicit) and (latin1_german1_ci,implicit) for operation \'=\', mysql zeichensatz / kollation der mysql-verbindungändern, illegal mix of collations (latin1_german1_ci,implicit), illegal mix of collations (latin1_german1_ci,implicit) and (latin1_general_ci,implicit) for operation \'=\', illegal mix of collations (latin1_general_ci,implicit) and (latin1_german1_ci,implicit) for operation \'like\', create function illegal mix of collations, illegal mix of collations and (latin1_german1_ci,implicit), mysql function \illegal mix of collations\, (latin1_general_ci, implicit) and (latin1_german1_ci, implicit) update

Alle Zeitangaben in WEZ +1. Es ist jetzt 01:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.