Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Doctrine orm 原则:数据对列太长(由于转义)_Doctrine Orm_Symfony - Fatal编程技术网

Doctrine orm 原则:数据对列太长(由于转义)

Doctrine orm 原则:数据对列太长(由于转义),doctrine-orm,symfony,Doctrine Orm,Symfony,我得到了以下错误: “name”列的长度为255个字符,但输出转义似乎把它搞砸了。我做错了什么 执行“插入零件(删除数据)”时发生异常, 带有参数的名称、代码、价格、库存值(?、、、、、)' [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\x64\x65\x65\x64\x20\X62\x65\x65\x

我得到了以下错误:

“name”列的长度为255个字符,但输出转义似乎把它搞砸了。我做错了什么

执行“插入零件(删除数据)”时发生异常, 带有参数的名称、代码、价格、库存值(?、、、、、)' [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\x64\x65\x65\x64\x20\X62\x65\x65\x67\x69\X66”, “1101012”,“12.00”,0]:

SQLSTATE[22001]:字符串数据,右截断:1406数据太长,无法读取 第1行的“名称”列500内部服务器错误-DriverException 2 链接的例外情况: PDOException»PDOException»

从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

结果发现有两个问题

一个是,条令不尊重MySQL服务器设置的默认排序规则,甚至不尊重config.yml等中的无数选项。最后,我发现它是这样的,我真的不明白为什么。但它现在起作用了

charset:  utf8mb4
default_table_options:
    charset: utf8mb4
    collate: utf8mb4_unicode_ci
options:
    charset: utf8mb4
    collate: utf8mb4_unicode_ci
    1002: "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'"

其次,我试图加载到数据库中的数据源(csv文件)显然不是utf8格式。将其保存到“utf8”中解决了问题。现在我想知道如何让php将输入转换成所需的格式。

输出转义是什么意思?这是一个Symfony消息;在执行em->flush()之前,能否显示控制器代码?特别是您为
名称
所做的!!!!这是包含所有转义码的一个。如果您确实试图持久化大于255个字符的数据(考虑到错误消息,这似乎不太可能),请增加列大小。添加了请求的代码。如果我将字符串截断为大约5个字符,它就可以工作,但这显然不是我想要的。为什么不将相应实体中“name”属性的类型从字符串更改为文本?嗨@pavlovich这实际上有些过分,因为我的字符串永远不会超过255个字符。但我现在确实把它改成了“文本”,重新生成了实体,删除并重建了数据库,但它仍然说数据太长了。SQLSTATE[22001]:字符串数据,右截断:1406数据对于第1行的“name”列太长
charset:  utf8mb4
default_table_options:
    charset: utf8mb4
    collate: utf8mb4_unicode_ci
options:
    charset: utf8mb4
    collate: utf8mb4_unicode_ci
    1002: "SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_ci'"