gpt4 book ai didi

php - 在 Symfony 3 中使用 MS SQL

转载 作者:可可西里 更新时间:2023-11-01 13:25:51 26 4
gpt4 key购买 nike

您好,我需要一些有关 Symfony 3 和 MS SQL Server 的帮助:

我正在使用 Symfony 3 并想连接到 MS SQL Server,我做了一些研究,发现默认情况下不支持它,但有一些 bundle 可供使用。

在尝试了其中一些之后,我发现了一个对我来说部分有用的 Bundle (realestateconz/mssql-bundle),但每次我尝试查询数据库时都会收到一条错误消息(我将其格式化为更具可读性):

Uncaught PHP Exception Doctrine\DBAL\DBALException: An exception occurred while executing 
'SELECT
t0.id AS id_1,
t0.username AS username_2
FROM user t0
WHERE t0.username = ?' with params ["testusername"]:

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

代码行是这样的

$user = $em->getRepository('AppBundle:User')->findBy(array('username' => $username)); 

我的原则和 symfony 设置如下所示:

#config.yml
doctrine:
dbal:
driver_class: Realestate\MssqlBundle\Driver\PDODblib\Driver
host: "%database_host%"
#port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
#charset: UTF8

#parameters.yml
parameters:
database_host: myserver
database_name: database #without schema
database_user: user
database_password: pw

config.yml 中的端口和字符集被注释掉了,因为我在 stackoverflow 上发现了一些关于在定义端口和字符集时使用 MySQL 的原则(尽管不记得确切的位置)。在 parameters.yml 中,我无法添加数据库的架构(表“用户”的完整路径是 database.web.[User]),因为它将在另一个错误中运行。

网络服务器运行 Ubuntu 16.04 和 apache2、php5.6(包括软件包 php5-sybase),我使用 freetds 连接到 MSSQL-Server(手动连接工作)。

这是我的 FreeTDS 设置:

[MYSERVER]
host = myserveradress
port = 1433
tds version = 8.0
client charset = UTF-8
text size = 20971520

据我所知,Doctrine 从单行代码(MySQL-Syntax 而不是 MSSQL-Syntax)生成错误的 SQL-Query,那么我该怎么做才能解决这个问题?或者是否有另一种方法可以使用 Symfony 3 在 Linux 上成功连接和查询 MSSQL-Server?

最佳答案

我自己找到了解决方案,您需要在 SQL-Server 使用的语法中为 Doctrine 提供实体的确切表名。

对于 Symfony 使用的注释格式,它看起来像这样:

/** Annotation for your Classfile
* ExampleClass
*
* @ORM\Table(name="[ExampleClass]") <-- Square Brackets for MSSQL
* @ORM\Entity
*/

将表名更改为 MSSQL 格式后,一切都按预期进行。

关于php - 在 Symfony 3 中使用 MS SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37346372/

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