关键字GO引发PHP错误

Dev*_*xon 3 php sql linux sql-server sql-server-2005

我遇到了一个问题,我试图在Linux服务器上恢复PHP中的MSSQL转储.我正在读取文件,然后将文件作为查询传递.

这有效:

CREATE TABLE [dbo].[recipes](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [Title] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Desc] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Directions] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [CompAuthor] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [CompName] [nvarchar](500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [Servings] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
 CONSTRAINT [PK_recipes] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
)
Run Code Online (Sandbox Code Playgroud)

但是只要我添加像GO一样的字

WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
 ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON)
    )

GO
Run Code Online (Sandbox Code Playgroud)

它会抛出一个错误

Warning: mssql_query(): message: Incorrect syntax near 'GO'
Run Code Online (Sandbox Code Playgroud)

我的问题是导致此错误的原因以及如何修复?

Aar*_*and 6

GO不是Transact-SQL关键字.它是Management Studio和SQLCMD等工具的批处理分隔符.

答案是不将GO命令注入您从应用程序发送的批处理中.只需将它们作为单独的批次发送(如有必要).

来源:GO(Transact-SQL)

  • @Devin什么是"SQL转储"?也许你的问题应该包括你想要运行的实际代码,所以我们有一些关于为什么你认为需要`GO`的背景. (2认同)
  • @Devin你是如何产生这个的?再次,你能告诉我们这是什么样的,所以我们知道是否/为什么甚至需要`GO`? (2认同)