2

ASP.NET メンバーシップに MySQL セッション状態プロバイダーを使用しています。MySQL Web サイト構成ユーティリティを使用してセッション状態プロバイダーを構成すると、ツールは先に進み、次のスキーマを作成しました。

Tables_in_users

my_aspnet_applications
my_aspnet_membership
my_aspnet_profiles
my_aspnet_roles
my_aspnet_schemaversion
my_aspnet_sessioncleanup
my_aspnet_sessions
my_aspnet_users
my_aspnet_usersinroles

自動セッション クリーンアップ ユーティリティが次の例外をスローし続けるという問題があります。

データ ソースとの通信中に例外が発生しました。

Action: CleanupOldSessionsException: MySql.Data.MySqlClient.MySqlException (0x80004005): Table 'users.my_aspnet_Sessions' doesn't exist
   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.Web.SessionState.MySqlSessionStateStore.DeleteTimedOutSessionsWithCallback()
   at MySql.Web.SessionState.MySqlSessionStateStore.DeleteTimedOutSessions()
   at MySql.Web.SessionState.MySqlSessionStateStore.CleanupOldSessions(Object o)

例外は完全に有効です。「users.my_aspnet_Sessions」は実際には存在しません。問題を回避する方法はありますか?構成で何かを見逃していませんか?

既にテーブルの名前を変更しようとしましたが、コネクタの他のコンポーネントが現在の名前を想定しているため、他の例外が発生します。

どんな助けでも大歓迎です。

お時間をいただきありがとうございます。

4

1 に答える 1

2

コメントで言ったように、私は同じ問題を抱えていました。

「同じ問題があります。私の場合、原因はわかっていますが、解決策がありません...私のデータベースはLinuxサーバーにあるため、テーブル名は大文字と小文字が区別されます...MySQLはmy_aspnet_sessionsという名前のテーブルをプロバイダーのどこかに作成しますmy_aspnet_Sessions としてアクセスしようとしています」

この問題は mysql コネクタのバグが原因で、バージョン 6.8.3 ( http://dev.mysql.com/downloads/file.php?id=450594 ) で修正されました。

状態サーバー プロバイダーのバージョンをインストールして "Version=6.8.3.0" に変更するだけで、問題なく動作するはずです。

于 2014-01-03T12:11:20.887 に答える