"ERROR 1406: 1406: Daten zu lang für Spalte" aber es sollte nicht sein?

8

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.

    
Vrankela 22.12.2015, 15:12
quelle

2 Antworten

14

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: -

%Vor%     
Akshey Bhat 22.12.2015, 15:17
quelle
9

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.

    
Shadow 22.12.2015 15:23
quelle

Tags und Links