"CREATE TABLE" Ожидается оператор SQL Server ")" после типа данных - PullRequest
0 голосов
/ 04 июня 2019

Учитывая этот SQL:

CREATE TABLE dbo.dtproperties
    ( [id]       int             NOT NULL
    , [objectid] int                 NULL
    , [property] varchar(64)     NOT NULL
    , [value]    varchar(255)        NULL
    , [uvalue]   nvarchar(510)       NULL
    , [lvalue]   image(16)           NULL
    , [version]  int             NOT NULL
    )

Пытаясь запустить это в реальной оболочке или с помощью средства проверки синтаксиса SQL, он ожидает закрывающую скобку в 8,20, которая находится в пробеле между int и NOT NULL. Вот изображение проверки в sql-format.com :

enter image description here

На самом деле я не пишу этот SQL вручную - он создается из дампа структуры из соединения с базой данных Ruby on Rails ActiveRecord. Устаревшая база данных, к которой она подключена, хорошо, но синтаксически не проверяет. Мне пришлось программно заключать все имена столбцов в квадратные скобки из-за того, как часто зарезервированные ключевые слова используются в качестве имен столбцов. Поэтому, какой бы ни была эта проблема, в идеале я смогу решить ее программным путем.

1 Ответ

3 голосов
/ 05 июня 2019

image(16) должно быть image, поскольку тип данных image никогда не имел разрешения / размера.

В идеале вы хотите изменить все типы данных image на varbinary(max), если image выиграно.не будет поддерживаться в будущем.

Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...