MySQL – Entity: значение для столбца IsPrimaryKey в таблице «TableDetails» – DBNull

Я использую Visual Studio 2013 с Entity Framework 5 и M ySQL Server 5.7.9 .

При попытке создать модель из базы данных ( или «Обновить модель из базы данных» ) появляется следующее сообщение:

‘System.Data.StrongTypingException: значение для столбца IsPrimaryKey в таблице TableDetails является DBNull. —> System.InvalidCastException: Указанный приказ недопустим.

Я знаю, что этот вопрос задавали раньше, но я не нашел никакого решения. Также у меня нет возможности понизить до MySQL 5.6.

Проблема возникает даже для простой таблицы.

Таблица образцов

CREATE TABLE new_table ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(45) NOT NULL, PRIMARY KEY (id) ) ENGINE = InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8; 

Если таблица состоит только из Первичного ключа, тогда модель создается так, как должна.

EDIT: если я создаю оба поля PRIMARY Keys, модель создается без каких-либо ошибок.

Кто-нибудь об этом знает?

С уважением.

Полный стек ошибок:

Не удалось создать модель из-за следующего исключения: «System.Data.StrongTypingException: значение для столбца« IsPrimaryKey »в таблице« TableDetails »- это DBNull. —> System.InvalidCastException: Указанный приказ недопустим. в Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey () — Конец внутренней трассировки стека исключений – в Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.SchemaDiscovery.TableDetailsRow.get_IsPrimaryKey () в Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateProperties (строки 1 columns, IList 1, ошибки 1 columns, IList 1, список 1& keyColumns, List 1 и исключенные 1& invalidKeyTypeColumns) at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList , список 1& invalidKeyTypeColumns) at Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntityType(IList 1 столбцов, булевы & needsDefiningQuery) в Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets (IEnumerable 1 tableDetailsRows, EntityRegister entityRegister, IList 1 entitySetsForReadOnlyEntityTypes, DbObjectType ObjectType) в Microsoft.Data.Entity .Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.CreateEntitySets (IEnumerable 1 tableDetailsRowsForTables, IEnumerable 1 tableDetailsRowsForTables, IEnumerable 1 tableDetailsRowsForViews, EntityRegister entityRegister) в Microsoft.Data.Entity.Design.VersioningFacade.ReverseEngineerDb.StoreModelBuilder.Build (StoreSchemaDetails storeSchemaDetails) в Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.CreateStoreModel () в Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelGenerator.GenerateModel ( 1 errors) at Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModels(String storeModelNamespace, List List 1 errors) at Microsoft.Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModels(String storeModelNamespace, List 1 errors) в Microsoft .Data.Entity.Design.VisualStudio.ModelWizard.Engine.ModelBuilderEngine.GenerateModel (EdmxHelper edmxHelper) ‘. Загрузка метаданных из базы данных заняла 00: 00: 00.5856317.

Entity Framework (версия 6.1.3) и MySQL Server (> = 5.7.6)

Один из способов решения проблемы –

 1. Open Services (services.msc) and restart MySQL57 service. 2. Execute the following commands in MySQL. use <>; set global optimizer_switch='derived_merge=OFF'; 3. Update the .edmx. 

Это поздний ответ. Но надеюсь, что это поможет кому-то.

Благодарю.

Это ошибка поиска: http://bugs.mysql.com/bug.php?id=79163

Запустите команду на консоли mysql:

установить глобальный optimizer_switch = ‘производный_merge = off’

ИЛИ

set @@ optimizer_switch = ‘deriv_merge = OFF’

(этот работал для меня)

Убедитесь, что изменение вступает в силу с помощью этой команды:

SELECT @@ optimizer_switch \ G

https://dev.mysql.com/doc/refman/5.7/en/switchable-optimizations.html

Каждый ответ выше работает отлично, но когда сервер или dev-машина перезагружается, нам нужно сделать все шаги снова и снова. Чтобы полностью решить проблему, мы можем поместить это значение «output_merge = OFF» в конфигурацию mysql. Итак, для этого вам нужно получить доступ к серверу MySQL с помощью MySQL Workbench и открыть вкладку «Файл опций»> «Выбор производительности». В группе Optimizer найдите optimizer_switch, установите флажок, чтобы включить поле, и поместите ‘output_merge = OFF’. Перезагрузите свой сервер в services.msc и voilá!

Для меня работал следующий sql:

 use adventureworks; set global optimizer_switch='derived_merge=off'; set optimizer_switch='derived_merge=off'; select @@optimizer_switch; select @@GLOBAL.optimizer_switch; 

Моя версия MySQL – 5.7.15, и я использовал опцию «EF Designer From Database» из Visual Studio 2015.

Надеюсь, это поможет другим 🙂

Обходной путь SET GLOBAL optimizer_switch = ‘производный_merge = off’;

Значение для столбца «IsPrimaryKey» в таблице «TableDetails» – это DBNull

Это происходит, когда вы пытаетесь использовать MySql среди Entity Framework.

Я решил так:

Откройте MySQL 5.7 Command Line Client, введите свой пароль, нажмите enter и введите:

 set global optimizer_switch='derived_merge=off'; set optimizer_switch='derived_merge=off'; select @@optimizer_switch; select @@GLOBAL.optimizer_switch; 

Перезагрузите Visual Studio, вам хорошо идти, я пробовал VS 2013 и VS 2017, и работал в обоих!

Запустите этот скрипт, он отлично сработал для меня при использовании пакета MySql.Data.Entity

 use YourDB; set global optimizer_switch='derived_merge=OFF'; 

Мы столкнулись с такой же ошибкой. Но, я думаю, это проблема сервера MySQL.

положение дел:

  • EF5
  • MySQL VS Tools 1.2.5
  • Сообщество VS 2015
  • C #
  • из базы данных создайте EF Designer (я использую японское издание, поэтому название меню – это мой английский …)

результат:

  • MySQL 5.7.9 => ошибка.
  • MySQL 5.6.26 => нет ошибки.

В моем случае:

Используемые модули:

Entity Framework 6 MySql Data Connector 6.9.9 MySQL VS Tools 1.2.6 Инструменты EF6 для VS2015

Я должен сделать это => SET GLOBAL optimizer_switch = ‘производный_merge = off’; Но если loggin с «root» пользователем, ошибка продолжается. Когда loggin с «обычным» пользователем, он создает модель OK.

С сегодняшнего дня это подтвержденная ошибка MySql Community Server 5.7.9 с идентификатором 79163 .

В качестве обходного решения я переработал приложение для использования практики Code First

( ADO.NET Entity Data Object -> Пустой код Первая модель )

и вручную добавили все объекты и их свойства.

Используемые модули:

  • Entity Framework 6
  • Разъем данных MySql 6.8.9
  • MySQL VS Tools 1.2.5
  • Инструменты EF6 для VS2013

я нашел хорошее обходное решение для такого типа ошибок.

1. Решение (сначала firebase database) Вместо того, чтобы пытаться обновить существующую модель в файле .edmx, щелкните правой кнопкой мыши одну из ваших сущностей в edmx и выберите -> перейти к modelbrowser (новый журнал появится в проводнике карт проекта). Теперь выберите объект, который хотите обновить, щелкните правой кнопкой мыши и сделайте обновление. В моем случае он работал каждый раз без необходимости отключать что-либо в mysql. Но может случиться так, что вы будете вынуждены изменить некоторые отношения вручную. Если что-то здесь не так (в моем случае нет проблем с ключом non fk / pk.Если вы удалите fk и попытаетесь самостоятельно упорядочить все отношения, то ваш db может быть удален. Но это никогда не происходит, если вы просто обновляете не первичные / атрибуты внешнего ключа или просто добавление новой таблицы.

EDIT: это решение отлично подходит для удаления, обновления и добавления новых отношений. Это вызывает проблемы при выполнении обновлений по атрибутам fk / pk!

Если ваша таблица была удалена, просто создайте новую с теми же настройками.

2. Решение (сначала firebase database, когда нужно обновить ключи pk / fk), удалите таблицу и создайте новую. Это занимает 3 минуты вместе

Надеюсь, я смогу немного помочь, эта ошибка заставила меня с ума сойти за последние 2 недели!

ps, я никогда не испытывал этот тип ошибок до тех пор, пока не переписал! внешний ключ в существующем отношении в mysql. Затем я попытался обновить отношение с сущностью (сначала firebase database), а с тех пор появился dbNullBug. Я смог управлять своими объектами вручную, добавляя и удаляя существующие атрибуты, но это было действительно утомительно. Решение 1 работает хорошо для меня, и если мне нужно обновить внешний ключ, я просто сниму существующую модель и создаю новую.

  • MySQL условная вставка
  • JOIN запросы против нескольких запросов
  • Проблемы с символами UTF-8; я не вижу того, что я хранил
  • Транспонирование динамических столбцов в строки
  • Неразумно ли назначать базу данных MySQL каждому пользователю на моем сайте?
  • MySQL - Как найти точное совпадение слов, используя LIKE?
  • Как проверить, существует ли firebase database mysql
  • ERROR 1396 (HY000): Операция CREATE USER не удалось выполнить 'jack' @ 'localhost'
  • Заполнение наборов результатов в MySQL
  • Спящий режим: создание таблиц Mysql InnoDB вместо MyISAM
  • Какие строки возвращаются при использовании LIMIT с OFFSET в MySQL?
  • Давайте будем гением компьютера.