我正在尝试学习symfony
并通过各种示例进行工作。主要问题是我真的不知道如何配置doctrine.yaml
。
我正在使用SQLSRV
当我加载php bin/console doctrine:fixtures:load --append
时
错误出现:
SQLSTATE [IMSSP, -48]: The encoding 'utf8' is not a supported encoding for the CharacterSet connection option.
我的学说配置是:
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_sqlsrv'
charset: utf8
default_table_options:
charset: utf8
collate: utf8_general_ci
url: '%env(resolve:DATABASE_URL)%'
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
我也尝试了默认配置:
charset: utf8mb4
default_table_options:
charset: utf8mb4
collate: utf8mb4_unicode_ci
答案 0 :(得分:0)
字符集utf8
不存在,但UTF-8
(全部大写)存在。根据微软的PDO_SQLSRV documentation:
要将UTF-8编码的数据发送或检索到服务器:
确保源列或目标列的类型为nchar或nvarchar。
在参数数组中将PHP类型指定为SQLSRV_PHPTYPE_STRING('UTF-8')。或者,将“ CharacterSet” =>“ UTF-8”指定为连接选项。
当您将字符集指定为连接选项的一部分时,驱动程序会假定其他连接选项字符串使用相同的字符集。还假定服务器名称和查询字符串使用相同的字符集。
您可以将UTF-8或SQLSRV_ENC_CHAR传递给CharacterSet,但是不能传递SQLSRV_ENC_BINARY。默认编码为SQLSRV_ENC_CHAR。
您可能想尝试以下方法:
doctrine:
dbal:
# configure these for your database server
driver: 'pdo_sqlsrv'
charset: UTF-8
url: '%env(resolve:DATABASE_URL)%'