gpt4 book ai didi

mysql - FreeTDS UTF-8 插入 mysql

转载 作者:行者123 更新时间:2023-11-30 21:58:10 25 4
gpt4 key购买 nike

我有一台安装了 symfony 框架的带有 mysql 的 linux 服务器。现在我正在尝试从 sql server 2012 获取数据并且一切正常,除非我尝试在 mysql 数据库中插入值。

SQLSTATE[HY000]: General error: 1366 Incorrect string value: '\x80 IN P...' for column 'note_anagrafica' at row 1 

看来问题出在数据转换上。

我尝试插入数据的 mysql 中列的数据类型是:

text

排序规则是:

utf8_unicode_ci

FreeTds 配置设置为 UTF-8,驱动程序为 odbc。

有人能解决这个问题吗?

编辑:

odbc.ini

[server]
Driver = FreeTDS
Server = x.x.x.x
Port = 1234
Database = databasename
TDS_Version = 8
client charseg = UTF-8
server charset = CP1252

freetds.conf

[server]
host = x.x.x.x
port = 1234
tds version = 8.0
client charset = UFT-8
text size = 20971520
use uft-16 = true

mysql 的 Doctrine 配置。

charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci

外部 mssql 数据库的 doctrine 配置:

server:
driver_class: Lsw\DoctrinePdoDblib\Doctrine\DBAL\Driver\PDODblib\Driver
host: "%a_database_host%"
port: "%a_database_port%"
dbname: "%a_database_name%"
user: "%a_database_user%"
password: "%a_database_password%"
charset: utf8mb4

从现在开始,当我尝试将数据插入 mysql 时,我收到了来自 sql server 2012 with doctrine 的错误。直到现在我在阅读时都没有问题,如果我在网上输出结果,像 ø 这样的特殊字符带有 � 符号。在调用之前我必须进行转换

$entityManager->persist($object);
$entityManager->flush();

最佳答案

为 doctrine 配置设置字符集为 utf8mb4 就可以了。

关于mysql - FreeTDS UTF-8 插入 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44355193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com