Что значит there is already an

Уже есть объект, названный в базе данных

Ошибка обновления базы данных из консоли диспетчера пакетов. Я использовал Entity Framework 6.x и подход, основанный на кодах. Ошибка

«В базе данных уже есть объект с именем» AboutUs «.

Как я могу решить эту проблему?

Консоль управления пакетами:

ОТВЕТЫ

Ответ 1

Кажется, есть проблема в процессе миграции, запустите команду add -igration в «Консоли диспетчера пакетов»:

Начальная версия надстройки -IgnoreChanges

выполните некоторые изменения, а затем обновите базу данных из файла «Initial»:

Обновление базы данных -verbose

Изменить: -IgnoreChanges находится в EF6, но не в EF Core, вот обходной путь: fooobar.com/questions/13639947/.

Ответ 2

Возможно, вы изменили пространство имен в своем проекте!
В вашей базе данных есть таблица dbo.__MigrationHistory . В таблице есть столбец с именем ContextKey .
Значение этого столбца основано на вашем namespace . например, это » DataAccess.Migrations.Configuration «.
Когда вы меняете пространство имен, оно вызывает дубликаты имен таблиц с разными пространствами имен.
Итак, после того, как вы измените пространство имен на стороне кода, также измените пространство имен в этой таблице в базе данных (для всех строк).
Например, если вы измените пространство имен на EFDataAccess , то вы должны изменить значения столбца ContextKey в dbo.__MigrationHistory на » EFDataAccess.Migrations.Configuration «.
Затем со стороны кода в Tools = > Package Manager Console используйте команду update-database .

Другим вариантом вместо изменения значения контекста в базе данных является жесткое кодирование значения контекста в вашем коде для старого значения пространства имен. Это возможно, наследуя DbMigrationsConfiguration , и в конструкторе просто присвойте старое значение контекста ContextKey , чем наследуйте от MigrateDatabaseToLatestVersion и оставьте этот класс пустым. Последнее, что нужно сделать, это вызвать Database.SetInitializer(new YourDbInitializer()); в вашем DbContext в статическом конструкторе.

Я надеюсь, что ваша проблема будет исправлена.

Ответ 3

«В базе данных уже есть объект с именем» AboutUs «.

Это исключение говорит вам, что кто-то добавил базу данных уже «AboutUs» в базу данных.

AutomaticMigrationsEnabled = true; может привести к этому, так как версии базы данных в этом случае не контролируются вами. Чтобы избежать непредсказуемых миграций и убедиться, что каждый разработчик в команде работает с той же структурой базы данных , я предлагаю установить AutomaticMigrationsEnabled = false; .

Автоматические миграции и закодированные миграции могут жить вместе, если вы очень осторожны и единственный разработчик в проекте.

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

Рекомендация для командной среды

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

Ответ 4

В моем случае моя таблица EFMigrationsHistory была опустошена (как-то), и при попытке запустить update-database я бы получил:

В базе данных уже есть объект с именем «AspNetUsers»

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

Чтобы устранить эту проблему, я добавил строки в таблицу EFMigrationsHistory . 1 строка для каждой миграции, о которой я знал, что база данных обновлена.

Строка будет содержать 2 столбца: MigrationId и ProductVersion

MigrationId — это имя файла миграции. Пример: 20170628112345_Initial

ProductVersion — это версия ef, которую вы запускаете. Вы можете найти это, введя Get-Package в Консоль диспетчера пакетов и ищите свой пакет ef.

Надеюсь, это поможет кому-то.

Ответ 5

В моем случае я переименовал сборку, содержащую модель фреймворка сущности кода. Хотя фактическая схема не изменилась во всех таблицах миграций, называемых

содержит список уже выполненных миграций на основе старого имени сборки. Я обновил старое имя в таблице миграции, чтобы он соответствовал новому, и затем миграция снова работала.

Ответ 6

Убедитесь, что ваш проект запуска решений имеет правильную строку подключения в файле конфигурации. Или установите параметр -StartUpProjectName при выполнении команды update-database. Параметр -StartUpProjectName указывает файл конфигурации, который будет использоваться для именованных строк подключения. Если опущен, используется указанный файл конфигурации проектов.

Ответ 7

Примечание. Не рекомендуется решение. но быстро исправить в некоторых случаях.

Для меня dbo._MigrationHistory в производственной базе данных пропущены записи миграции во время процесса публикации, но база данных разработки имела все записи миграции.

Если вы уверены, что у производственной базы данных есть аналогичная и новейшая схема по сравнению с dev db, скопируйте все записи миграции в производственный db, чтобы решить проблему.

Вы можете делать только в VisualStudio.

  • Откройте панель «Проводник SQL Server» > щелкните правой кнопкой мыши таблицу dbo._MigrationHistory в базе данных источника (в моем случае dev db) > Нажмите «Сравнение данных. «.
  • Затем запустится мастер сопоставления данных, выберите целевую базу данных (в моем случае для производства db) и нажмите «Далее».
  • Через несколько секунд он покажет некоторые записи только в исходной базе данных. просто нажмите кнопку «Обновить цель».
  • В браузере нажмите кнопку обновления и посмотрите сообщение об ошибке.

Обратите внимание, что, опять же, это не рекомендуется в сложном и серьезном проекте. Используйте это только у вас есть проблема во время обучения ASP.Net или EntityFramework.

Ответ 8

У меня была такая же проблема, и после трех часов борьбы я выясняю, что происходит

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

Чтобы решить эту проблему, просто удалите этот код и напишите, что хотите. Например, я хотел добавить столбец, поэтому я просто пишу

Ответ 9

Удалите строки из таблицы dbo_MigrationHistory или удалите таблицу и запустите

Он будет запускать все миграции в проекте по одному

Ответ 10

В моём случае проблема была в сеидере. Я вызывал _ctx.Database.EnsureCreated() внутри него, и, насколько я понял, команда обновления базы данных успешно выполнена, но затем Сеидер попытался создать базу данных «второй раз».

  1. Запустите обновление, просто запустите приложение и вызовите EnsureCreated(). База данных будет создана/обновлена
  2. Закомментируйте или удалите сеялку.

Ответ 11

Очередной сценарий EF Core.

Убедитесь, что у вас есть файл Migrations/YOURNAMEContextModelSnapshot.cs.

Если вы попытались заново создать базу данных вручную, удалив файлыigration.cs, будьте осторожны, так как ваш файл Migrations/* ContextModelSnapshot.cs все еще существует.

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

Ответ 12

Просто выполните команду update -igration -Script. Это генерирует новый *.sql скрипт, который включает все изменения БД, включенные в миграцию. В конце кода команды вставки выглядят примерно так: INSERT [dbo]. [__ MigrationHistory] ([MigrationId], [ContextKey], [Model], [ProductVersion]), вы можете просто запустить все эти INSERT, и БД будет синхронизирована

Ответ 13

После более часа отсутствия результатов я попробовал другой подход, не используя миграции, но я сравнил схему.

В Visual Studio → Инструменты → SQL Server → Сравнение новой схемы

Сначала я создал новую совершенно новую базу данных с EF-миграциями. Затем я сравнил новую базу данных с той, которую хотел обновить. Наконец сгенерировал скрипт миграции, и я смог выполнить обновление схемы.

Ответ 14

В моем случае (хочу сбросить и получить новую базу данных),

Сначала я получил сообщение об ошибке: There is already an object named ‘TABLENAME’ in the database.

и я увидел немного раньше:

Моя база данных была создана, но в истории миграции нет записей.

Я отбрасываю все таблицы, кроме dbo.__ MigrationsHistory

Миграции История была пуста.

Запустите dotnet ef database update -c StudyContext —verbose

(—verbose просто для удовольствия)

Ответ 15

Я столкнулся с той же ошибкой, что и ниже. Затем я исправил это, как показано ниже:

  1. Проверьте текущие базы данных в вашем проекте:
    • dotnet ef migrations list
  2. Если вы добавили самое новое, удалите его:
    • dotnet ef migrations remove
  3. Гарантированные выходные данные этой базы данных должны быть обнаружены в исходном коде: файлы .cs/.Designer.cs

4. Теперь все в порядке. Попробуйте еще раз добавить: dotnet ef migrations add [new_dbo_name]

5. Наконец, попробуйте обновить еще раз, в базе данных о списке миграции:

  • dotnet ef database update [First]
  • dotnet ef database update [Second]
  • .
  • dotnet ef database update [new_dbo_name]

Надеюсь, это полезно для вас. ^^

Ответ 16

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

затем обновите базу данных и просто добавьте новую миграцию

Ответ 17

Вы удалили папку миграции, чем пытаетесь запустить команду «update-database» на консоли диспетчера пакетов? если так

Просто вручную удалите все ваши таблицы Чем запустить, если update-databse (данные семени минусов будут удалены)

Ответ 18

В файле миграции проверьте метод public override void Up(). Возможно, вы пытаетесь создать новый объект db, который уже находится в базе данных. Итак, перед созданием объекта db вам нужно отбросить этот объект/таблицу. Просто сделай, как рев —

И теперь запустите миграцию Update-Database -TargetMigration: «2016_YourMigration»

Источник

Ошибка Another instance is already running error — как исправить при запуске ETS 2 и других игр

Сегодня расскажем как исправить ошибку при запуске игры Euro Truck Simulator 2 «Another instance is already running». Инструкция так же подойдёт для других игрушек с площадки Стим и других клиентов. В начале кратко расскажем о возможных причинах такой ошибки, а ниже дадим рекомендации как исправить проблему.

Another instance is already running error

Причины ошибки

Кому интересен перевод ошибки? Окно с предупреждение сообщает: «Ошибка запуска. Копия приложения уже запущена». Причин тут несколько:

  • Вы уже запустили игру двойным кликом или из лаунчера, а потом запустили игру второй раз. Таким образом в системе появилось два процесса.
  • В системе завис процесс игры ETS 2 или «TruckersMP лаунчера».
  • Если у вас слабый ПК нажмите ОК и ждите запуска либо перезапускаем компьютер. Если ошибка повторяется — читаем дальше.

Если дело в зависшем процессе — откройте Диспетчер задач (Ctrl+alt+Del) или клик ПКМ на панели задач — «Диспетчер задач». Находим процесс TruckersMP, нажимаем правой и выбираем «Завершить процесс» или «закрыть задачу» в зависимости от версии операционной системы.

Запускаем Диспетчер задач

Как исправить Another instance is already running

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

  • Нажимаем клавишу Виндовс + R на клавиатуре. Или Пуск — Выполнить.
  • Набираем в строке «%programdata%» и жмем Enter(набираем без кавычек).
  • Находим и удаляем папку «TruckersMP».
  • Далее открываем папку C:\Program Files\ и удаляем оттуда лаунчер «TruckersMP Launcher».
  • Идем на сайт truckersmp.com загружаем его и переустанавливаем.
  • Запускаем лаунчер с правами Администратора и нажимаем «Установить доступные обновления».
  • Перезапускаем компьютер и пробуем запустить игру.

Так же игроки пигут, что помогает загрузка и установка Microsoft Directx 9, скачать можно по этой ссылке с официального сайта Майрософт: Microsoft DirectX® 9.0c. Русский язык присутствует.

Заключение

Надеюсь вы разобрались как исправить оршибку при запуске ETS 2 «Another instance is already running error». Похожим образом можно исправить ошибки при запуске игр из Стима. Первым делом проверяем и завершаем процесс игры или лаунчера. Потом обновляем их, перезагружаем ПК и пробуем запустить. Напишите в комментариях какой из способов помог вам. Если у вас схожие ошибки- пишите в комментарии к этой странице и мы поможем найти решение.

Евгений Загорский

IT специалист. Автор информационных статей на тему Андроид смартфонов и IOS смартфонов. Эксперт в области решения проблем с компьютерами и программами: установка, настройка, обзоры, советы по безопасности ваших устройств. В свободное время занимается дизайном и разработкой сайтов.

Источник

Читайте также:  Аезакми что это значит
Оцените статью