2017-09-12 15 views
12

MySQL DBを使用してREST APIを作成しています。 MySQLを使用してAPIを実行するために必要なステップをすべて実行しましたが、この例外が発生しています。接続文字列がMySQLで機能していません

{「メッセージ」:「エラーが発生しました。」、「ExceptionMessage」:「初期化文字列のフォーマットがインデックス121始まる仕様に準拠していません」、 『ExceptionType』: "システム。 (System.Data.Common.DbConnectionOptions.GetKeyValuePair(String connectionString、Int32 currentPosition、StringBuilderバッファ、ブール値useOdbcRules、文字列&キー名、文字列&、keyvalue)で、 "ArgumentException"、 "StackTrace": "を返します。 System.Data.Common.DbConnectionOptions..ctor(String connectionString、Hashtableの同義語、Boolean useOdbcRules)でのDbConnectionOptions.ParseInternal(Hashtableのparsetable、StringのconnectionString、BooleanのbuildChain、Hashtableのシノニム、ブールfirstKey)\ r \ n System 。データMySql.Data.MySqlClient.MySqlConnectionStringBuilder..ctor(String connStr); MySql.Data.MySqlClient.MySqlConnection.set_ConnectionString(String value)での.Common.DbConnectionStringBuilder.set_ConnectionString(文字列値)\ r \ n MySql.Data.MySqlClient.MySqlConnectionStringBuilder..ctor(String connStr) System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.b__18(DbConnection t、DbConnectionPropertyInterceptionContext 1 c)\r\n at System.Data.Entity.Infrastructure.Interception.InternalDispatcher)1.Dispatch [TTarget、TInterceptionContext](Tターゲット対象、アクション2 operation, TInterceptionContext interceptionContext, Action実行中、アクション3 executed)\r\n at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.SetConnectionString(DbConnection connection, DbConnectionPropertyInterceptionContext 1 interceptionContext)\ r \ nシステムで。 Data.Entity.Internal.LazyInternalConnection.InitializeFromConnectionStringSetting(ConnectionStringSettings appConfigConnection)\ r \ n System.Data.Entity.Internal.LazyInternalConnection.TryInitializeFromAppConfig(文字列名、AppConfigの設定)\ r \ n System.Data.Entity.Internal.LazyInternalConnection .Initialize()\ r \ n System.Data.Entity.Internal.LazyInternalConnection.CreateObjectContextFromConnectionModel()\ r \ System.Data.Entity.Internal.Content(System.Data.Entity.Internal.Linq)でSystem.Data.Entity.Internal.LazyInternalContext.InitializeContext()\ r \ nをSystem.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(型エンティティ型)に設定します。 InternalSet 1.Initialize()\r\n at System.Data.Entity.Internal.Linq.InternalSet System.Data.Entity.Infrastructure.DbQueryの1.GetEnumerator()\ r \ n 1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()\r\n at System.Collections.Generic.List 1. D:\のRestWithMySQL.Controllers.ProductsController.Get()の1..ctor(IEnumerable 1 collection)\r\n at System.Linq.Enumerable.ToList[TSource](IEnumerable 1ソース)\ r \ n Work \ DOT NET API \ RestWithMySQL \ RestWithMySQL \ Controllers \ ProductsController.cs:line 19 "}

私の接続文字列に問題があると思います。私はそれを探しましたが、正確な解決策を見つけることができませんでした。

<connectionStrings> 
    <!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-RestWithMySQL-20170911031521.mdf;Initial Catalog=aspnet-RestWithMySQL-20170911031521;Integrated Security=True" providerName="System.Data.SqlClient" />--> 
    <add name="ProductEntities" connectionString="metadata=res://*/ProductsModel.csdl|res://*/ProductsModel.ssdl|res://*/ProductsModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot; server=localhost;user id=root;database=accurate_dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="MySql.Data.MySqlClient"/> 
    <!--<remove name="LocalMySqlServer" /><add name="LocalMySqlServer" connectionString="" providerName="MySql.Data.MySqlClient" />--> 
</connectionStrings> 

ご協力いただければ幸いです。

+1

「"」を '' ''に変更しようとしましたか? –

答えて

7

最小限の接続文字列を削除します。オプションを追加し、何が失敗するかを確認します。たとえば、integrated security=trueはMySQLでは動作しません。代わりにpasswordを追加する必要があります。ここ

フォーム: ASP.NET MVC 4 EF5 with MySQL

これに近い何かを試してみてください:

<add name="DefaultConnection" providerName="MySql.Data.MySqlClient" connectionString="Data Source=localhost;port=3306;Initial Catalog=api_db;User Id=root;password=''"/>

+0

接続文字列を変更しましたが、今私はこのコードを取得しています。データベースファーストまたはモデルファースト開発のEDMXファイルから生成されたものですが、これは正しく動作しません。この問題を修正するには、この例外をスローするコード行を削除しないでください。 –

1

は、接続文字列は、最後にそれで別の引用がありませんでしょうか?さらに

<connectionStrings> 
    <add name="ProductEntities" connectionString="metadata=res://*/ProductsModel.csdl|res://*/ProductsModel.ssdl|res://*/ProductsModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot; server=localhost;user id=root;database=accurate_dev;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="MySql.Data.MySqlClient"/> 
</connectionStrings> 

: あなたは決算& QUOT含まれていないin this answer

0

を提供するこれらのステップを検討し、MySQLのプロバイダを使用するためには、あなたの接続文字列の最後に。

関連する問題