gpt4 book ai didi

sql-server - Laravel:生成的 SQL 仅在特定表上抛出错误

转载 作者:行者123 更新时间:2023-12-03 20:57:02 29 4
gpt4 key购买 nike

我正在使用 Eloquent ORM 或查询生成器通过 Laravel 访问 MS SQLServer。这适用于所有表,但一个特定的表会抛出此错误:

production.ERROR: exception 'Illuminate\Database\QueryException' 
with message 'SQLSTATE [HY000]: General error: 4004 General SQL Server error:
Check messages from the SQL Server [4004] (severity 16) [(null)]
(SQL: select * from [tblLeistung])

我在 MS SQLServer Management Studio 中执行了给定的 SQL 查询,它工作正常。我还尝试在 ORM protected $table = 'DBName.dbo.tblLeistung'; 中添加数据库名称和模式名称正确生成 (SQL: select * from [DBName].[dbo].[tblLeistung])但也会抛出同样的错误。

问题似乎与模式有关,因为它是一个相当大的表(23 列,2160 条记录)。删除它并使用相同的模式重新创建它仍然会导致错误。删除它并创建一个具有相同名称的简单表可以解决错误(但是我需要让它与给定的模式一起使用)。
有人知道是否存在通过 Laravel 远程访问 SQLServer 不支持的特定表设计吗?
是否有其他(简单的)方法来测试问题是出在 Laravel 上还是服务器上?

我从事此工作已有一段时间了,感谢任何帮助。提前致谢!

生成一个CREATE TABLE有问题的表的语句如下所示:

CREATE TABLE [dbo].[tblLeistung](
[LeistungID] [int] IDENTITY(1,1) NOT NULL,
[LeistungskatalogID] [int] NULL,
[SchlagID] [int] NOT NULL,
[StatusInternID] [int] NULL,
[StatusExternID] [int] NULL,
[VertragID] [int] NULL,
[Menge] [float] NULL DEFAULT ((0)),
[SperreLeistung] [bit] NULL DEFAULT ((0)),
[SperreAusfuehrung] [bit] NULL DEFAULT ((0)),
[RechnungEinkID] [int] NULL,
[RechnungVerkID] [int] NULL,
[LeistungsunterkatID] [int] NULL,
[LeistungsBeschreibung] [nvarchar](max) NULL,
[InterneNotiz] [nvarchar](max) NULL,
[AbrechungsdatenVorhanden] [bit] NULL DEFAULT ((0)),
[AuftragID] [smallint] NULL,
[UeberleistungID] [int] NULL,
[AuftraggeberID] [int] NULL,
[SSMA_TimeStamp] [timestamp] NOT NULL,
[DatumFrist] [datetime] NULL,
[DatumGeplant] [datetime] NULL,
[DatumAusgefuehrt] [datetime] NULL,
[DatumAuftragfreigabe] [datetime] NULL,
CONSTRAINT [tblLeistung$PrimaryKey] PRIMARY KEY CLUSTERED
(
[LeistungID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

ALTER TABLE [dbo].[tblLeistung] WITH NOCHECK ADD CONSTRAINT [tblLeistung$tbRechnungVerktblLeistung] FOREIGN KEY([RechnungVerkID])
REFERENCES [dbo].[tblRechnungVerk] ([RechnungVerkID])
ON UPDATE CASCADE

ALTER TABLE [dbo].[tblLeistung] CHECK CONSTRAINT [tblLeistung$tbRechnungVerktblLeistung]

编辑:

  • 删除 FOREIGN KEY没有解决
  • 如果我访问一个不存在的表,也会发生同样的错误。但是,在多个具有不同配置的数据库实例上创建同一个表后,我非常有信心它存在。

最佳答案

Laravel 使用 db-library(如果可用)连接到无法从 MSSQL 接收 unicode 数据的 Sql Server。 (1,2)

如果您不必在“LeistungsBeschreibung”中保存 unicode 数据,请将列数据类型更改为 varchar。

您可能想查看对类似问题的已接受答案: MSSQL Query issue in PHP and querying text data

链接

关于sql-server - Laravel:生成的 SQL 仅在特定表上抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23897004/

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