gpt4 book ai didi

sql-server - Laravel 的 Microsoft SQL Server 错误 : Why this solves my mistake?

转载 作者:行者123 更新时间:2023-12-03 02:55:22 26 4
gpt4 key购买 nike

我正在 Laravel 创建一个应用程序,它访问存储在远程数据库中的信息 Microsoft SQL Server .

我遇到了一个错误,我已经解决了;但我不太明白为什么......

问题

我在 Microsoft SQL Server 的数据库中创建了一个“users”表,以便通过登录系统使用该应用程序:运行良好。

我的工作是显示 Microsoft SQL Server 中现有数据库中找到的表中的信息...所以我创建了model其中一张表的数据 — 例如,名为 Sales - 但是当我尝试使用以下方式查询信息时:

$sale = Sales::find("1");

我收到下一个错误:

SQLSTATE[HY000]: General error: 4004 General SQL Server error: Check messages from the SQL Server [4004] (severity 16) [(null)]

与其他Eloquent同样的错误方式和Fluent .


有问题的表

这些是包含查询表的一些列:

nvarchar


我是如何解决这个问题的:

我已经解决了在两个配置文件中进行两项更改的问题:

<小时/>

1) 内部/etc/freetds/freetds.conf

我将 tds 版本更改为:

tds version = 4.2

tds version = 8.0

并设置客户端字符集如下:

client charset = UTF-8
<小时/>

2)内部/etc/php5/apache2/php.ini

mssql.charset = "UTF-8"

default_charset = "UTF-8"

我的问题:为什么这有效?

据我所知,这是由于:

Laravel uses db-library (if it's available) to connect to Sql Server which cannot receive unicode data from MSSQL. (1,2) — From Here

所以我猜这可能是由于类型字段 nvarchar ...但是当我更改模型以删除 nvarchar 的所有字段时,我仍然遇到同样的问题...


我的 Laravel 数据库配置片段:config/database.php

 [...]

'default' => 'sqlsrv',

[...]
'sqlsrv' => array(
'driver' => 'sqlsrv',
'host' => 'foo.bar',
'database' => 'MyDataBase',
'username' => 'UserName',
'password' => 'MySecret',
'prefix' => ''
)

[...]

不知道还有没有configuration对于 sqlsrv指定 FreeTDS 的版本.


tsql -C 的结果命令:

enter image description here

最佳答案

tds version = 4.2 是 FreeTDS 的全局默认版本,但非常过时,不支持 UTF-8,甚至在连接到时也会出现问题SQL Server 的现代版本。请参阅此处的文档:

http://www.freetds.org/userguide/choosingtdsprotocol.htm

您的 nvarchar 列将需要整个堆栈中的 UTF-8

另请注意,tds version = 8.0 已弃用且无效,可能会在 FreeTDS 的 future 版本中删除。您可能需要tds version = 7.2tds version = 7.3,具体取决于您安装的FreeTDS驱动程序版本。您可以通过从命令行使用 tsql -C 找到已安装的 FreeTDS 版本。

更新:关键是更改 tds 版本 = 7.2

关于sql-server - Laravel 的 Microsoft SQL Server 错误 : Why this solves my mistake?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38292761/

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