【问题标题】:FreeTDS UTF-8 insert in mysqlFreeTDS UTF-8 在 mysql 中插入
【发布时间】:2017-06-04 14:32:48
【问题描述】:

我有一个安装了 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 的教义配置。

charset: utf8mb4
          default_table_options:
              charset: utf8mb4
              collate: utf8mb4_unicode_ci

外部 mssql 数据库的原则配置:

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 的学说。 到目前为止,我在阅读 execpt 时没有问题,如果我在网上看到结果,像 ø 这样的特殊字符带有 � 符号。 在通话之前我必须进行转换

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

【问题讨论】:

  • 您是否将文本列note_anagrafica 创建为CHARACTER SET utf8CHARACTER SET utf8mb4
  • 我在列上设置了 utf8mb4 但我认为问题出在 freetds 因为如果我在浏览器上显示查询结果我会看到 ?关于这些特殊字符
  • 您是否尝试将client charset = UTF-8 放入您的freetds.conf? SQL Server 2012 列类型是NVARCHARNTEXT 而不是VARCHARTEXT
  • 是的,我尝试在 freetds 中插入 UTF-8,列是文本,但是 sql server 的排序规则是 sql_latin1_general_cp_cs_as 是正确的 UFT-8 转换吗?
  • 我很确定 SQL Server 中的列必须是 NTEXT 才能显示 Unicode,而不管排序规则如何。您是否能够在 SQL Server 的列中选择或插入 Unicode 作为 TEXT 列?

标签: mysql sql-server symfony doctrine freetds


【解决方案1】:

将字符集设置为 utf8mb4 以进行学说配置,这样就可以了。

【讨论】:

  • 我做了这个更改,但仍然出现同样的错误。我还对 my.cnf (mysql) 和学说进行了更改
猜你喜欢
  • 2013-09-01
  • 1970-01-01
  • 2013-05-05
  • 2017-05-14
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 2019-10-18
  • 1970-01-01
相关资源
最近更新 更多