如何修复此错误:Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'NormalizedEmail' 等

Posted

技术标签:

【中文标题】如何修复此错误:Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name \'NormalizedEmail\' 等【英文标题】:How to fix this error: Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'NormalizedEmail' and etc如何修复此错误:Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'NormalizedEmail' 等 【发布时间】:2021-10-07 10:11:19 【问题描述】:

我的应用程序在我创建的数据库之外运行。我添加了迁移、更新数据库和所有爵士乐,这样它就可以正常工作了。 现在我必须将我的项目转换为使用 LIVE 数据库,我收到以下错误消息:

Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'NormalizedEmail'.
Invalid column name 'ConcurrencyStamp'.
Invalid column name 'LockoutEnd'.
Invalid column name 'NormalizedEmail'.
Invalid column name 'NormalizedUserName'.
Invalid column name 'UserType'.

我不知道如何解决这个问题,但是当我使用旧数据库时它可以工作,使用这个新数据库时,它只会在我尝试登录用户或与我的数据库有关的任何事情时不断给我这个错误.

请帮忙!

谢谢!

【问题讨论】:

您在实时数据库中有这些列吗? 嗨,据我所知,我在实时数据库中没有这些列 @jacky 所以...修复它?你是如何在 dev 上创建列的? 就是这个问题,我不知道如何解决 【参考方案1】:

从代码中删除此列 我认为它与数据库不匹配

看this

【讨论】:

【参考方案2】:

这个问题说起来很简单,也很难解决。但是有一个解决方案。

手动解决

如果所有自动方法都失败并且您没有任何额外信息,那么您至少可以确保您的架构在技术上与应用程序的期望兼容。

根据您使用的和问题中未指定的 RDBMS,您可以获得所有表名和列名。在 mysql 和 PostgreSQL 中,您可以查询 information_schema.columns,在 SQL Server 中,您可以为此目的查询 join sys.tablessys.columns。确保按表名、列名对结果进行排序并将其导出。为您的旧数据库和产品数据库执行此操作。找出不同之处并执行alter 语句以添加缺失的列。

自动解决方案

如果您在某处有一些版本化的脚本正在执行更改并可能用数据填充新列,那么请手动或使用迁移工具运行这些脚本。确保如果存在此类文件,那么您可以找到它们。

删除

您也可以从代码中删除列引用,正如 Cemil 在他/她的回答中所建议的那样,但您应该避免这样做,除非您绝对确定这对您的情况是可行的。基本假设是代码引用这些是有原因的,并且您缺少数据库中需要创建它们的列。在这个基本假设被证明是错误的之前,不要从代码中删除列引用。

【讨论】:

以上是关于如何修复此错误:Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'NormalizedEmail' 等的主要内容,如果未能解决你的问题,请参考以下文章

如何获得修复此错误的 Stacktrace?

如何使用嵌入 webhook 的 discord.py 修复此错误

如何修复此 MYSQL//Phpmyadmin 错误? [复制]

如何修复此“忽略 SQL 语句”错误?

如何在我的查询中修复此语法错误?

PythonException:从 UDF 引发异常:'ValueError:如何在 Databricks 中修复此错误?