В базе данных уже существует объект с именем что делать sql
В базе данных уже есть объект с именем
Update-сбой базы данных из консоли диспетчера пакетов. Я использовал Entity Framework 6.X и код-первый подход. Ошибка
«в базе данных уже есть объект с именем «AboutUs».»
как я могу решить эту проблему?
Консоль Управления Пакетами:
11 ответов
кажется, есть проблема в процессе миграции, запустите команду add-migration в «консоль диспетчера пакетов»:
внесите некоторые изменения, а затем обновите базу данных из «начального» файла:
надеюсь ваша проблема будет решена.
«в базе данных уже есть объект с именем «AboutUs».»
это исключение говорит вам, что кто-то уже добавил объект с именем «AboutUs» в базу данных.
автоматические миграции и кодированные миграции могут жить вместе, если вы очень осторожны и единственный разработчик в проекте.
автоматическая миграция позволяет использовать первую миграцию кода без наличие файла кода в вашем проекте для каждого изменения, которое вы делаете. Не все изменения могут применяться автоматически-для пример столбца переименовывает требуется использование миграции на основе кода.
рекомендация для командных сред
вы можете чередовать автоматические и основанные на коде миграции, но это не рекомендуется в сценариях командной разработки. Если вы являетесь частью команда разработчиков, использующих source control чисто автоматические миграции или миграции на основе кода. Учитывая ограничения автоматической миграции рекомендуется использовать на основе кода миграции в командных средах.
в моем случае, мой EFMigrationsHistory таблица была опустошена (как-то) и при попытке запустить update-database Я хотел бы получить:
в базе данных уже есть объект с именем «AspNetUsers»
после того, как таблица была опустошена, имело смысл, что она пыталась перезапустить начальную миграцию и попытаться воссоздать таблицы.
исправить эту проблему, я добавил строки в мой EFMigrationsHistory таблица. 1 строка для каждой миграции, о которой я знал, что база данных в актуальном состоянии.
строка будет иметь 2 столбца: MigrationId и ProductVersion
ProductVersion это версия ef, которую вы используете. Вы можете найти это, введя Get-Package в консоль диспетчера пакетов и ищет ваш пакет ef.
надеюсь, что это полезно для кого-то.
убедитесь, что ваш проект запуска решений имеет правильную строку connectionstring в файле конфигурации. Или задайте параметр-StartUpProjectName при выполнении команды update-database. Параметр-StartUpProjectName указывает файл конфигурации, используемый для именованных строк подключения. Если этот параметр опущен, используется файл конфигурации указанного проекта.
в моем случае я переименовал сборку, содержащую модель entity framework с первым кодом. Хотя фактическая схема не изменилась вообще таблица миграций под названием
содержит список уже выполненных миграций на основании старый имя сборки. Я обновил старое имя в таблице миграций, чтобы оно соответствовало новому, и миграция снова работала.
удалить строки из таблицы dbo_MigrationHistory или удалить таблицу и запустить
он будет запускать все миграции в вашем проекте Один за другим
Примечание: не рекомендуется решение. но в некоторых случаях быстро исправить.
для меня dbo._MigrationHistory в производственной базе данных отсутствовали записи миграции во время процесса публикации, но база данных разработки имела все записи миграции.
Если вы уверены, что производственная БД имеет ту же самую и самую новую схему по сравнению с dev db, скопируйте все записи миграции в рабочую БД может решить эту проблему.
Вы можете сделать в VisualStudio исключительно.
обратите внимание, что, опять же, это не рекомендуется в сложных и серьезных проектах. Используйте это только у вас есть проблемы во время ASP.Net или обучение EntityFramework.
в моем случае, проблема была в сеялки. Я звонил _ctx.База данных.EnsureCreated () внутри него и, насколько я понял, команда update database успешно выполнена, но затем сеялка попыталась создать базу данных «второй» раз.
просто выполните команду update-migration-Script. Это создает новый *.SQL-скрипт, который включает все изменения БД, включенных в миграции. В конце кода находятся команды insert примерно так: INSERT [dbo].[__MigrationHistory] ([MigrationId], [ContextKey], [Model], [ProductVersion]) вы можете просто запустить эту вставку, и DB будет синхронизирован
EF 5 Ошибки миграции кода: «в базе данных уже есть объект с именем _____ «
Занимаясь миграцией кода EF5, я столкнулся со странной повторяющейся проблемой, которая теперь мешает мне работать. Попытался запустить update-database и получил эту ошибку:
В базе данных уже есть объект с именем ‘RequestStatus’.
Подробный дамп журнала :
Я перепробовал все, что нашел в Гугле. Вещи, которые я пробовал и не дал никаких результатов:
Больше всего бесит то, что мой коллега находится в той же кодовой базе и вообще не испытывает этой проблемы. Я использую VS2012 и EF5 LocalDb.
Немного Кода Для Справки
Инициализатор Базы Данных
Контекст БД
RequestStatus, на котором он терпит неудачу.
Что является частью модели запроса
Семенной Метод / Configuration.cs
1 ответ
Я работаю над проектом ASP.NET MVC с Entity Framework с кодом сначала из базы данных. Я получаю модели для каждой таблицы в базе данных. Я внес некоторые изменения в модели, включил миграцию, и когда я начинаю миграцию, я получаю ошибку: В базе данных уже есть объект с именем ‘TableName’. Я.
Убедитесь, что имя строки подключения совпадает с именем DbContext, которое вы пытаетесь обновить. Другими словами, вы пытаетесь изменить существующую базу данных.
Похожие вопросы:
Это мой запрос, который я пытаюсь запустить в своей базе данных, но я нашел эти 3 ошибки ниже keep happened. CREATE VIEW STUD1 AS SELECT *, RN = ROW_NUMBER() OVER (PARTITION BY R.ContractID ORDER BY.
Я работаю над проектом ASP.NET MVC с Entity Framework с кодом сначала из базы данных. Я получаю модели для каждой таблицы в базе данных. Я внес некоторые изменения в модели, включил миграцию, и.
У меня есть веб-сайт asp.net core mvc, использующий ядро entity framework. Я не знаю, как это произошло изначально, но я не могу пройти мимо этой ошибки: There is already an object named AspNetRoles.
В SQL Server 2014 году я хотел создать внешний ключ ALTER TABLE tblPerson ADD CONSTRAINT tblPerson_Gender_FK FOREIGN KEY(Gender) REFERENCES tblGender(ID); Но я всегда получаю эту ошибку: Msg 2714.
Пожалуйста, смотрите код ниже: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE Test AS BEGIN begin select * into #dbreviews from dbreviews end drop table #dbreviews begin select *.
Я знаю, что в ef core вы можете генерировать сценарий миграции от одной миграции к следующей. Допустим, у меня есть 5 миграций: Миграция1 Миграция2 Миграция3 Миграция4 Миграция5 Migration3 и.
T-SQL ошибка » В базе данных уже существует объект с именем «#t2». «
Подскажите, мб кто сталкивался, почему данный запрос выдаёт сие сообщение, в предпоследнем запросе я её явно дропаю, и именно на последнем запросе выдаёт ошибку. Если выполнять все запросы по отдельности, то всё ок
drop table #t1
select p.ID as PID,pp.id into #t1 FROM tmp_for_attach t
inner join people p on t.enp=p.enp—t.fam=p.fam and t.IM=p.IM AND t.OT=p.OT AND t.DR=p.DR
inner join POLIS PP ON P.ID=pP.PID
WHERE (stage = 1) AND t.opdoc=3
order by p.id,pp.ID
drop table #t2
select p.ID,MAX(pp.id) as maxpolid into #t2 FROM tmp_for_attach t
inner join people p on t.enp=p.enp—t.fam=p.fam and t.IM=p.IM AND t.OT=p.OT AND t.DR=p.DR
inner join POLIS PP ON P.ID=pP.PID
WHERE (stage = 1) AND t.opdoc=3
group by p.id
order by p.id
delete from #t1 where id in(select #t2.maxpolid from #t2)
select PID,MAX(id)as id into #t2 from #t1
group by pid
order by pid
Можно подробнее? Про коммит не слышал, транзакциями не пользовался, но сейчас попробовал так:
BEGIN TRANSACTION;
drop table #t1
select p.ID as PID,pp.id into #t1 FROM tmp_for_attach t
inner join people p on t.enp=p.enp—t.fam=p.fam and t.IM=p.IM AND t.OT=p.OT AND t.DR=p.DR
inner join POLIS PP ON P.ID=pP.PID
WHERE (stage = 1) AND t.opdoc=3
order by p.id,pp.ID
drop table #t2
select p.ID,MAX(pp.id) as maxpolid into #t2 FROM tmp_for_attach t
inner join people p on t.enp=p.enp—t.fam=p.fam and t.IM=p.IM AND t.OT=p.OT AND t.DR=p.DR
inner join POLIS PP ON P.ID=pP.PID
WHERE (stage = 1) AND t.opdoc=3
group by p.id
order by p.id
delete from #t1 where id in(select #t2.maxpolid from #t2)
drop table #t2
COMMIT TRANSACTION;
BEGIN TRANSACTION;
select PID,M
BEGIN TRANSACTION;
select PID,MAX(id)as id into #t2 from #t1
group by pid
order by pid
то же самое в той же строке
DROP TABLE and CREATE TABLE should not be executed on the same table in the same batch. Otherwise an unexpected error may occur.
В базе данных уже есть объект с именем I_XXXRECID
Эта ошибка появляется при синхронизации DataDictionary.
Описание ошибки SQL: [Microsoft][Собственный клиент SQL Server 11.0][SQL Server] В базе данных уже есть объект с именем «I_100013RECID».
Оператор SQL: ALTER TABLE «DBO».ACOCOSTCENTERATTRIBUTEVALUE_BR ADD CONSTRAINT I_100013RECID ПЕРВИЧНЫЙ КЛЮЧ НЕКЛЮЧЕННЫЙ (RECID)
Я скопировал всю базу данных по бизнесу и коду и создал новый AX Env. Я не уверен, есть ли эта ошибка и в исходном Env, но я хочу решить эту проблему в новом Env.
Что я уже пробовал:
Удалил таблицу из SQL Server Management Studio и затем синхронизировал из AOT, но ошибка не исчезла.
Пытался удалить имя индекса из SSMS:
Но получаю эту ошибку:
Не удалось удалить индекс ‘ACOCOSTCENTERATTRIBUTEVALUE_BR.I_100013RECID’, так как он не существует или у вас нет разрешения.
Но при запросе индексов он показывает правильную таблицу:
РЕДАКТИРОВАТЬ 1: Дополнительная информация
Нет конфликта в таблице ID:
Таблица из SSMS:
Удаление таблицы из SSMS:
Почему из 3 индексов не удаляются 2 индекса при удалении таблицы из SSMS? Почему только 1 удаляется? Проверьте ниже для 3 индексов после синхронизации. Как от них избавиться? SSMS не позволит мне удалить его, сказав: «Каталог нельзя изменить». Могу ли я попытаться удалить его, изменив настройки основных данных? Я не уверен, что все таблицы, связанные с этой таблицей, заполнены в каталоге.
MSSQLSERVER_208
Сведения
attribute | Значение |
---|---|
Название продукта | SQL Server |
Идентификатор события | 208 |
Источник события | MSSQLSERVER |
Компонент | SQLEngine |
Символическое имя | SQ_BADOBJECT |
Текст сообщения | Недопустимое имя объекта «%.*ls». |
Объяснение
Не удается найти указанный объект.
Возможные причины
Возможны следующие причины возникновения этой ошибки.
Объект указан неверно.
Объект не существует в текущей базе данных или в указанной базе данных.
Объект существует, но пользователю не может быть предоставлен к нему доступ. Например, может оказаться так, что пользователь не имеет разрешений для доступа к объекту или объект создан в инструкции EXECUTE, но доступ к нему осуществляется вне области действия инструкции EXECUTE.
Действие пользователя
Проверьте следующую информацию и исправьте инструкцию соответствующим образом.
Имя объекта записано правильно.
Контекст текущей базы данных является правильным. Если не указано имя базы данных для объекта, то объект должен существовать в текущей базе данных. Дополнительные сведения об установке контекста базы данных см. в статье USE (Transact-SQL).
Объект существует в системных таблицах. Чтобы проверить существование таблицы или другого объекта на уровне схемы, отправьте запрос к представлению каталога sys.objects. Если объект отсутствует в системных таблицах, значит он был удален или у пользователя отсутствуют разрешения на просмотр метаданных объекта. Дополнительные сведения о разрешениях на просмотр метаданных объекта см. в статье Настройка видимости метаданных.
Объект содержится в применяемой по умолчанию схеме пользователя. Если его там нет, имя объекта нужно указывать в двухкомпонентном формате: имя_схемы.имя_объекта. Следует отметить, что скалярные функции должны всегда вызываться с использованием по меньшей мере двухкомпонентного имени.
Учет регистра в параметрах сортировки базы данных.
Если в базе данных используются параметры сортировки с учетом регистра, то имя объекта должно согласовываться по регистру с именем объекта в базе данных. Например, если определенный объект имеет имя MyTable в базе данных с параметрами сортировки с учетом регистра, запросы, в которых этот объект именуется как mytable или Mytable, будут возвращать ошибку 208, так как имена объектов не согласуются.
Параметры сортировки базы данных можно проверить, введя следующую инструкцию.
Аббревиатура CS в имени параметров сортировки указывает, что учитывается регистр символов. Например, значение Latin1_General_CS_AS определяет параметры сортировки с учетом регистра и с учетом диакритических знаков. Значение CI указывает, что в параметрах сортировки не учитывается регистр.
Пользователь имеет разрешение на получение доступа к объекту. Чтобы проверить, какие разрешения имеет пользователь для доступа к объекту, можно воспользоваться системной функцией Has_Perms_By_Name.