は、私は次のエラーを得た:ドクトリン:(原因エスケープへの)列の長すぎるデータ
「名前」欄に255文字の長さであるが、出力が台無しにそれをエスケープするようです。私は何を間違えたのですか?私のmy.iniから
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();
: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 »
[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
出力エスケープとはどういう意味ですか?これはSymfonyのメッセージです。 em-> flush()を実行する直前にコントローラコードを表示できますか?特にあなたは 'name'のために何をしているのですか?それはすべてのエスケープコードを持つものです。 –
255文字以上のデータを永続化しようとしている場合(エラーメッセージが表示されない可能性が高いと思われる)、列のサイズを増やしてください。 – Cerad
は要求されたコードを追加しました。文字列を約5文字に切り詰めると機能しますが、それは明らかに私が望むものではありません。 – bluppfisk