Ich habe die folgende Tabellenstruktur:
%Vor%Wenn ich dann einen Benutzer über die Benutzeroberfläche meiner Anwendung erstellt habe, muss ich den allerersten Admin manuell einstellen, und dies ist das einzige Mal, dass ich das direkt von der Datenbank aus mache die Benutzeroberfläche (Erteilen von Administratorrechten):
%Vor%aber dann bekomme ich:
%Vor%Was keinen Sinn ergibt, weil ich genau dasselbe auf anderen Maschinen mache und es funktioniert wie ein Zauber. Der einzige Unterschied ist, dass ich in diesem Szenario mysql 5.7 Server habe, während ich 5.6 Versionen auf den Maschinen habe, die das funktioniert.
Ich habe versucht, die folgende Lösung, aber es hat nicht für mich gearbeitet. Außerdem ist die my.ini-Datei in der 5.6-Maschine unverändert, wo sie funktioniert.
Downgrade auf 5.6 kommt nicht in Frage. Ich brauche hier eine echte Lösung.
isadmin ist eine Spalte vom Typ bit
und Sie speichern einen Wert vom Typ varchar
, der größer ist als bit
. Ändern Sie die Abfrage wie folgt: -
IsAdmin hat den Datentyp von Bit (1), aber Sie weisen ihm die Zeichenkette '1' zu. Geben Sie an, dass Sie ihm einen Bitwert zuweisen, indem Sie der "1" voranstellen. mit b oder verwende das 0b Format:
%Vor%oder
%Vor%Der Grund für dieses Verhalten ist wahrscheinlich strict_all_tables oder strict_trans_tables Die Einstellung ist auf dem mysql-Server v5.7 aktiviert:
Der strikte Modus steuert, wie MySQL ungültige oder fehlende Werte verarbeitet Datenänderungsanweisungen wie INSERT oder UPDATE. Ein Wert kann sein aus mehreren Gründen ungültig. Zum Beispiel könnte es die falschen Daten haben Geben Sie für die Spalte ein, oder es könnte außerhalb des Bereichs liegen. Ein Wert fehlt wenn eine neue einzufügende Zeile keinen Wert für einen Nicht-NULL enthält Spalte, die in ihrer Definition keine explizite DEFAULT-Klausel enthält. (Für ein NULL-Spalte, NULL wird eingefügt, wenn der Wert fehlt.) Strict-Modus wirkt sich auch auf DDL-Anweisungen wie CREATE TABLE aus.
Tags und Links mysql