gpt4 book ai didi

c# - 尝试更新用户配置文件会引发 MySqlException : column 'lastUpdatedDate' cannot be NULL

转载 作者:行者123 更新时间:2023-11-29 05:20:01 26 4
gpt4 key购买 nike

我有一个用 asp.net c# 和 MySQL 数据库编写的 Web 服务应用程序。我正在使用 MySQL 提供程序 (v6.9.4.0) 来获取成员资格、角色和配置文件。对于配置文件,我用它来存储 7 个属性、姓名、公司等。

到目前为止,我能够正常连接和访问数据库,读取所有用户和所有其他信息。我能够毫无问题地创建和删除用户帐户,并且所有配置文件属性都正确保存在“my_aspnet_profiles”表中。

但是,当我尝试更改现有帐户的某些属性时,出现以下异常(包括堆栈跟踪):

System.Web.HttpUnhandledException (0x80004005): Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Configuration.Provider.ProviderException: Profile update failed. ---> MySql.Data.MySqlClient.MySqlException: Column 'lastUpdatedDate' cannot be null

   at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
at MySql.Web.Profile.MySQLProfileProvider.SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
--- End of inner exception stack trace ---
at MySql.Web.Profile.MySQLProfileProvider.SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection)
at System.Configuration.SettingsBase.SaveCore()
at System.Configuration.SettingsBase.Save()
at System.Web.Profile.ProfileBase.SaveWithAssert()
at System.Web.Profile.ProfileBase.Save()
at Cylon.QuoteEngine.Application.Web.AccountManager.SaveUserProfile(String username, CylonProfile customProfile) in C:\Work\Web\AccountManager.cs:line 86

这在我使用本地计算机上托管的 MySQL 实例时有效,但是当我尝试使用服务器上托管的数据库运行应用程序时,出现异常。

这里是我试图保存用户配置文件的地方:

public void SaveUserProfile(string username, CylonProfile customProfile)
{
var profile = ProfileBase.Create(username);
profile.SetPropertyValue("Name", customProfile.Name);
profile.SetPropertyValue("Company", customProfile.Company);
...

profile.Save();
}

在我的 web.config 文件中,提供者声明为:

成员(member)提供者:

<membership defaultProvider="MySqlMembershipProvider">
<providers>
<clear />
<add name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web,Version=6.9.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" connectionStringName="ApplicationServices" enablePasswordRetrieval="true" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Encrypted" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" autogenerateschema="true" />
</providers>
</membership>

个人资料提供者:

<profile enabled="true" defaultProvider="MySqlProfileProvider">
<properties>
<add name="Name" type="String" />
<add name="Company" type="String" />
...
</properties>
<providers>
<clear />
<add name="MySQLProfileProvider" type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.9.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" applicationName="/" connectionStringName="ApplicationServices" autogenerateschema="True" description="" writeExceptionsToEventLog="False" enableExpireCallback="False" />
</providers>
</profile>

角色提供者:

<roleManager enabled="true" defaultProvider="MySqlRoleProvider">
<providers>
<clear />
<add connectionStringName="ApplicationServices" applicationName="/" name="MySqlRoleProvider" type="MySql.Web.Security.MySQLRoleProvider, MySql.Web,Version=6.9.4.0, Culture=neutral,PublicKeyToken=c5687fc88969c44d" autogenerateschema="true" />
</providers>
</roleManager>

我假设“lastUpdatedDate”列会自动更新,我不需要做任何编码来设置这个值,是吗?谁能解释为什么它发生在托管服务器上,而不是在我的本地机器上?我该怎么做才能修复它?

如果您需要更多信息,请告诉我,我可以添加。

最佳答案

抱歉没有足够的声誉来评论,但你可以看看这里,它看起来相关: How do you set a default value for a MySQL Datetime column?

更新
可能与 MySql v5.6.19 中的错误有关 bugs.mysql.com/bug.php?id=68472
如果 select @@explicit_defaults_for_timestamp; 返回 1,请尝试将 my.ini 文件中的值更改为 0。
该文件通常位于 C:\Program Files\MySQL\MySQL Server x.xx\my.ini

关于c# - 尝试更新用户配置文件会引发 MySqlException : column 'lastUpdatedDate' cannot be NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27152228/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com