Invalid column name partno

Invalid column name partno

com.microsoft.sqlserver.jdbc.SQLServerException: Invalid column name ‘partnerIdPartner’.

application.properties:

Table creation:

my repository:

executing simple query throws an error.

1 Answer 1

In native queries you have to use the column name not the property name:

But I suggest using JPQL queries and not native queries.

ДИСКЛЕЙМЕР

Автор не несет никакой ответственности, кроме как за достоверность предоставленной информации.
Всю нижеследующую информацию воспринимать и использовать на свой страх и риск.

После вступительной части была получена база, которая нормально открывалась (как в конфигураторе, так и в режиме предприятия), аварийное завершение с записью дампа спровоцировать не получалось — это уже было намного лучше, чем первоначальное состояние.

Но и работать с базой было нельзя. О ткрытие формы констант, определенных документов, попытка обновить конфигурацию ИБ и другие обычные действия — давали исключения уровня СУБД с добровольно-принудительным предложением завершить работу 🙂 Читайте ниже о том, как я победил каждое из них.

Примеры ошибок и приёмы лечения

Проблема №1. Нехватка поля (реквизита объекта либо константы)

Симптомы:

При попытке открыть форму объекта/констант/etc видим

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Invalid column name ‘_Fld123’

Диагноз:

Очевидно, что в схеме базы (в "метаданных") поле есть. А в реальной таблице — нет.
То есть в новом релизе было добавлено поле, но так как не было реструктуризации — его нет в реальных таблицах.

Что делать:

Как ни странно, добавить недостающее поле 🙂 Для этого нам нужно знать, в какую таблицу и какого типа.

В расследовании поможет профайлер (MS SQL Profiler).

Запускаем трассировку, воспроизводим ошибку, делаем поиск по имени поля, в идеале попадаем в запрос вида как на картинке.

Имя таблицы — в первой строке запроса, тип поля — параметр справа от самого поля.

В итоге у нас есть: куда и что добавить, и какого типа.

Добавим же это поле в SQL-студии, для этого нам поможет оператор ALTER TABLE . ADD

После добавления поля в таблицу — во всех строках в этом поле будет значение NULL, что не годится, так как как правило вызывает ошибки преобразования типов (например в поле должно быть Булево, и есть строки кода

поэтому заполним сразу неким значением по-умолчанию

Я обычно заполнял единичкой (для ссылок, чисел и булево) либо пустой строкой » для типа ntext

Читайте также:  Contact form 7 внешний вид

При выполнении обращайте внимание на контекст выполнения, то есть в какой базе будет выполнен запрос. Для уверенности можно использовать явное указание через USE

Выделяем нужный фрагмент, выполняем выделенный фрагмент текста запроса нажатием на Execute

Если всё ок — внизу отображается количество обработанных строк (цифры будут меняться в зависимости от реального количества строк в обрабатываемых таблицах)

Если всё сделали правильно — ошибка исчезнет.

Проблема №2. Наоборот, лишнее поле

Симптомы:

При попытке записать объект видим

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Cannot insert the value NULL into column ‘_Fld123’ , table ‘SufferedBase.dbo._Document234’ ; column does not allow nulls . INSERT fails .

Напрямую не мешает, но косвенно жить не даёт 🙂

Дело в том, что многие поля на уровне SQL имеют ограничение NOT NULL. То есть NULL туда записать нельзя. И при записи 1С явно передаёт в SQL через INSERT какие поля и какими значениями заполнить.

И если в SQL есть поле, про которое 1С не знает — значит неявно получится попытка записать в это поле NULL. И будет следующая о шибка

Диагноз:

В новом релизе поле было удалено. В схеме базы (в "метаданных") поля уже нет. А в реальной таблице — осталось.

Что делать:

Решением будет удалить это поле из таблицы SQL.

С помощью конструкции

Ниже весь процесс (в красной рамке лишние поля, их нет в схеме базы, что видно в запущенной в 1С:Предприятии обработке, которая показывает структуру базы данных. Таких существует много, пользоваться можете любой, моя опубликована здесь )

Проблема №3. Количество полей в реальной таблице SQL отличается от количества полей в метаданных

При попытке записать объект с заполненной табличной частью

Ошибка СУБД:
Microsoft OLE DB Prov >Column name or number of supplied values does not match table definition .

Диагноз:

Как и в прошлом случае, в схеме базы (в "метаданных") поля нет, в реальной таблице — осталось.
Разница с прошлой проблемой: расхождение в полях произошло в табличной части, а не в шапке.

Что делать:

Как и в прошлом случае, решением будет удалить это поле из таблицы SQL.

Но на этот раз — расследовать немного сложнее, так как нам неизвестен ни один идентификатор — ни проблемной таблицы, ни поля.

Читайте также:  Deepcool lucifer v2 обзор

Как и раньше, ищем проблемный запрос профайлером.

посчитать реквизиты в запросе

Самое интересное здесь — имя таблицы, куда идёт вставка.

После чего обращаем пристальное внимание на поля этой таблицы, и сравниваем их с полями этой же таблицы, но той базы, которую использовали для лечения (живая база, откуда брали служебные таблицы Config и тд).

Для этого сравнения есть разные способы, самый эффективный на мой взгляд: получить скрипты создания этих таблиц (подробно способ описан в решении проблемы №4, ниже)

И сравнить их тексты, вот так:

Таким образом, видим в новой проблемной базе 2 лишних поля, удаляем их описанным ранее способом, и проблема решается. Если всё правильно расследовали и сделали, конечно 🙂

Вариация на тему

Был еще случай, когда ошибка та же, но в профайлере мне не удалось ничего по ней найти полезного.
Тогда по журналу регистрации увидел на каком документе остановилась транзакция загрузки данных (на этапе восстановления обмена РИБ), попробовал поменять данные в его табличных частях. Точней, увидел что есть пустая ТЧ, внес в нее новую строку, увидел что ошибка воспроизводится, и далее как на прошлом шаге — сравнил скрипты создания этой таблицы, увидел разницу в одном поле, удалил его из битой базы, стало хорошо.

Проблема №4. Нехватка целиком какой-то таблицы

Симптомы:

В разных транзакциях вот такое:

Ошибка СУБД:
Microsoft OLE DB Provider for SQL Server: Invalid object name .

Диагноз:

В схеме базы (в "метаданных") таблица есть, а в базе — такая отсутствует.
В новом релизе таблицу добавили, но так как реструктуризации не было, в базе её нет.

Что делать:

Самое простое — добавить из живой базы

  1. Находим там эту таблицу
  2. Правый клик на ней
  3. Script Table As
  4. CREATE TO
  5. New Query.
  6. Меняем там имя целевой базы
  7. Выполняем

Радуемся, если проблема решались (опционально)
🙂

Ещё кое-что

Был еще ряд проблем, которые не удалось классифицировать. Кратко о них:

  1. При реструктуризации исключение, жалоба на нехватку таблицы EDBT.
    Как выяснилось, так кодируется таблица внешнего источника данных
    После удаления этого внешнего источника данных из Конфигуратора — проблема решилась
  2. Словил ошибку

Either the parameter @objname is ambiguous or the claimed @objtype (COLUMN) is wrong

после анализа удалось выяснить, что ошибка связана с агрегатами, после небольших экспериментов в Конфигураторе по удалению агрегатов — задача была решена

Читайте также:  Crypto pro csp plugin

Если есть конфигурация поломанной базы (CF).

, то можно восстановить методом проще. Раскрыть этот CF в пустую базу, и оттуда перетащить в битую базу таблицу Config

Вместо эпилога

Вопросы, конструктивную критику, пожелания, дополнения и предложения, как обычно в комментарии.
Если статья оказалась полезной/интересной — Вы знаете что делать 🙂

И еще.. Интересно ли кому-то легкий мануал по соответствию имён таблиц "SQL-1C" ?
Который позволит однозначно ответить на вопрос "А какой таблице 1С соответствует SQL-ная _SeqB567" и все аналогичные

Это самая раздражающая проблема я когда-либо видел.

У меня есть таблица с 5 Автомобили другого столбца. Кроме того, таблица отдел. Это мой класс:

Это мой контроллер:

Мой индекс Просмотр

Ибо кто знает, что причина, я получаю внутреннее исключение из этого. Это отлично работает, когда я удалить код department_id из моего класса. Однако, если я определяю department_id, он бросает внутреннее исключение с указанием «Invalid Column Name„Department_id1“». Я не знаю, почему, но это добавление 1 к имени столбца так, конечно, это будет недействительно. Является ли это ошибка в Visual Studio?

Вы должны быть в состоянии сделать это:

Я не уверен, если вы предпочитаете делать это, но в Entity Framework, ссылаясь на таблицу в базе данных, C # код pluralizes имя таблицы. Так попробуйте переименовать таблицу департаментов . (аналогично Частоты для frequency..etc) Этого путь, даже если ваше имя таблицы в C # код является отделом, он будет ссылаться на соответствующую таблицу департаменты и, следовательно, ее столбцы. благодаря

Я должен был удалить Карлистские публичный список <получить; задавать; >Из отдела. Я не знаю, почему это исправили проблему, но это было сделано.

@ JohnC1, Вы сказали, что вы удалили «Список Карлистские», и она работала, причина, скорее всего, из-за ссылки на другую БД таблицы и столбца. При удалении этой линии вы больше не автоматически доступ к данным, связанным с помощью внешнего ключа таблицы Автомобилей.

Если вы используете DB первый построить модель DB, вполне вероятно, что у вас есть (или были) дубликат иностранного ключа или что-то подобное в базе данных. Я получил ту же ошибку после добавления другой таблицы (базы данных первой) и где-то продублированы или поврежден внешний ключ. Удаление ключа и реконструкции модели EDMX-DB работал для меня.

Ссылка на основную публикацию
Insomnia the ark цена свободы
Очередь просмотра Очередь Удалить все Отключить YouTube Premium Хотите сохраните это видео? Пожаловаться Пожаловаться на видео? Выполните вход, чтобы сообщить...
High speed hdmi cable with ethernet
Приветствую всех посетителей блога о компьютерах. Сегодня бы очень хотелось поведать читателям о так называемом HDMI кабеле, с помощью которого...
Highscreen pure j 4pda прошивка
Внимание! Использование инструментов для перепрошивки неопытными пользователями может привести к выходу аппарата из строя. Установка этого обновления приведет к полному...
Instagram как выложить фото с компьютера
Зачем нужно выкладывать фото и видео в Инстаграм через компьютер? Инстаграм придумали, чтобы можно было быстро загрузить фото с телефона....
Adblock detector