Ich habe folgende Fehlermeldung:Lehre: Daten zu lange Spalte (durch austretendes)
Die Spalte ‚Name‘ ist 255 Zeichen lang sein, aber es scheint, dass die Ausgabe entkommen Verwirrungen es auf. Was habe ich falsch gemacht?
An exception occurred while executing 'INSERT INTO parts (deletedAt, name, code, price, in_stock) VALUES (?, ?, ?, ?, ?)' with params [null, "\x50\x6f\x73\x74\x4e\x4c\x20\x50\x72\x69\x6f\x72\x69\x74\x79\x20\x50\x61\x6b\x6b\x65\x74\x20\x41\x61\x6e\x67\x65\x74\x65\x6b\x65\x6e\x64\x20\x42\x65\x6c\x67\x69\xeb", "1101012", "12.00", 0]:
SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'name' at row 1 500 Internal Server Error - DriverException 2 linked Exceptions: PDOException » PDOException »
foreach ($csv as $row) { #persist every part
$part = new Part();
$part->setCode($row[0]);
$part->setName($row[1]);
$part->setPrice(preg_replace("/[^0-9.]/","", $row[2])); # extract decimal number
$part->setInStock(($row[3])?1:0);
$em = $this->getDoctrine()->getManager();
$em->persist($part);
$count++; # get number of commits
}
$em->flush();
von meinem my.ini:
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
no-auto-rehash
[mysqld]
port = 3306
collation-server = utf8mb4_unicode_ci
init-connect = 'SET NAMES utf8mb4'
character-set-server = utf8mb4
skip-character-set-client-handshake
Was meinen Sie mit Ausgabe-Escaping? Dies ist eine Symfony-Nachricht. Können Sie den Controller-Code kurz vor dem em-> flush() anzeigen? Insbesondere, was du für 'name' machst !!!! Das ist der mit all diesen Escape-Codes. –
Wenn Sie wirklich versuchen, Daten mit mehr als 255 Zeichen zu persistieren (was bei Ihrer Fehlermeldung unwahrscheinlich erscheint), dann erhöhen Sie die Spaltengröße. – Cerad
hat den angeforderten Code hinzugefügt. Es funktioniert, wenn ich die Zeichenfolge auf ungefähr 5 Zeichen abschneide, aber das ist offensichtlich nicht, was ich will. – bluppfisk