MSSQL ОШИБКА «Неверное имя объекта» при добавлении поля в запрос? - PullRequest
0 голосов
/ 23 февраля 2011

У меня есть запрос INSERT, который работает нормально, но когда я добавляю дополнительное поле, я получаю ооочень полезную информацию:

Неверное имя объекта 'optimizations'

Оптимизация, являющаяся именем таблицы. Запрос ниже ... Я полностью потерян, почему это не сработает. Если я вырезал и вставил запрос в MSSQL Management Studio, запрос работает нормально.

INSERT INTO [optimizations] 
    ([opt_date],[opt_concept_id],[opt_pallet],[opt_turnable],
     [opt_sideupok],[opt_endupok],[opt_flatok],[opt_notstickingout],
     [opt_notinoverhang],[opt_itemsloaded],[opt_loadedweight],
     [opt_pweightutil],[opt_pvolumeutil],[opt_request_xml],
     [opt_response_xml],[opt_images],[opt_primary_stage_id]) 
VALUES 
     (GETDATE(),'775','20ft','true','false','false','true',
      'true','true','10','5952.6','18.6','48.9',
      '<xml><herpa><derpa>xml</derpa></herpa></xml>',
      '<xml><herpa><derpa>xml</derpa></herpa></xml>',
      'img1.jpg,img2.jpg,img3.jpg','98');

По какой-то причине, если я включу последнее поле в запрос [opt_primary_stage_id], оно не будет работать ... если я опущу это поле, оно будет работать нормально. Интересно, что если я добавлю [opt_primary_stage_id] в список передаваемых полей и передам ему значение NULL, запрос также будет работать нормально. Тип данных поля [opt_primary_stage_id] - INT, я попытался включить последнюю запись в разделе VALUES() как прямое число (3) и с кавычками ('3') ... ни один не работает.

Сервер, выполняющий код, работает под управлением PHP 4.3.9, под IIS и с MSSQL.

Это версия запроса с теми же данными, которые будут работать.

INSERT INTO [optimizations] 
    ([opt_date],[opt_concept_id],[opt_pallet],[opt_turnable],
     [opt_sideupok],[opt_endupok],[opt_flatok],[opt_notstickingout],
     [opt_notinoverhang],[opt_itemsloaded],[opt_loadedweight],
     [opt_pweightutil],[opt_pvolumeutil],[opt_request_xml],
     [opt_response_xml],[opt_images])
VALUES 
     (GETDATE(),'775','20ft','true','false','false','true','true',
      'true','10','5952.6','18.6','48.9',
      '<xml><herpa><derpa>xml</derpa></herpa></xml>',
      '<xml><herpa><derpa>xml</derpa></herpa></xml>',
      'img1.jpg,img2.jpg,img3.jpg');

РЕДАКТИРОВАТЬ: Исправлен XML для правильной скобки и добавлен рабочий запрос.

1 Ответ

1 голос
/ 23 февраля 2011

Добавление поля не будет само по себе вызывать сбой: там есть действительная причина.

Вы говорите, что оно работает в SSMS, а затем показывает, чтопроблема в PHP или в вызове.

Первые мысли:

  • Как долго длится команда.Это усекается где-то в PHP?Это динамический SQL IRL?

  • Является ли пользовательский контекст тем же от клиента?Например, у вас может быть одна и та же таблица в 2 разных схемах с разными разрешениями.

  • Неверная база данных в соединении.Что говорит SELECT DB_NAME ()?Звучит очевидно, но нет объекта = не там.Не отвергайте эту идею и предполагайте, что это правильный контекст: проверьте.

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