NServiceBus .netcore + MySql - mysql

I’m trying to configure NServiceBus in a simple .netcore3.1 console application to use MySql.
I have the Persistence set to SqlPersistence with a SqlDialect.MySql and i'm using the SqlServerTransport*.
My connection string is of type MySqlConnection :
server=localhost;user=root;database=database;port=3306;password=password;AllowUserVariables=True;AutoEnlist=false
When I run the application, I get the error :
System.Exception: ‘Pre start-up check failed: Could not open connection to the SQL instance. Check the original error message for details. Original error message: Keyword not supported: **port**
Does anyone have any ideas what it might be? Any help would be great!
FYI. I have efcore up and running using and connecting to the MySql database.

So it turns out I was trying to use the SQL Server transport configured with MySql. This is not supported.
MySql can only be used in the persistence layer.
Particlular Support -
"The SQL Server Transport unfortunately only supports SQL Server.
Unfortunately you’ll have to select another technology to enable
messaging."

Where are you storing your connection string? Could the cause be that you did not specify the correct provider name providerName="MySql.Data.MySqlClient"?
<connectionStrings>
<add name="devConnectionString" connectionString="server=go.itelescope.net;port=3307;user id=xxxxxxxx;password=xxxxx;persistsecurityinfo=True;database=dev"
providerName="MySql.Data.MySqlClient" />
</connectionStrings>

Related

AppHarbor: Connecting to a MySQL DB via ASP.NET MVC 5 + Dapper

I'm trying to get an application up and running on AppHarbor. It's been smooth sailing for the most part, but today I'm having trouble connecting to my MySQL database.
Using the credentials AppHarbor provided me with, I successfully connected to the mySQL database instance using dbForge Studio Express, created the necessary SQL schema, and populated the tables with data. Now I'm trying to use the following C# code to do a simple query using Dapper:
var sqlConnStringBuilder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["AppHarborMySql"].ConnectionString);
using (var db = new SqlConnection(sqlConnStringBuilder.ConnectionString))
{
db.Open();
// Do database query stuff
return result;
}
But this is the error that I'm running into, when I try to open the database connection:
An exception of type 'System.Data.SqlClient.SqlException' occurred in
System.Data.dll but was not handled in user code
Additional information: A network-related or instance-specific error
occurred while establishing a connection to SQL Server. The server was
not found or was not accessible. Verify that the instance name is
correct and that SQL Server is configured to allow remote connections.
(provider: Named Pipes Provider, error: 40 - Could not open a
connection to SQL Server)
This is how I've declared the connection string in Web.config:
<connectionStrings>
<add name="AppHarborMySql" connectionString="server=MYDOMAIN.mysql.sequelizer.com;database=MYDBNAME;uid=MYUSERNAME;pwd=MYPASSWORD" providerName="System.Data.SqlClient" />
</connectionStrings>
Am I missing something obvious? I'm using ASP.NET MVC 5.x and the latest version of Dapper... thanks in advance!
And of course, despite having spent the better part of an hour investigating, I discover the answer immediately after posting the question.
For anyone else who may run across the same problem: I added the MySql.Web NuGet package to my MVC project, added using MySql.Data.MySqlClient; to the top of my page, and then changed my code to point from SqlConnection to MySqlConnection. Here's what my working code block now looks like:
using (var db = new MySqlConnection(ConfigurationManager.ConnectionStrings["AppHarborMySql"].ConnectionString))
{
db.Open();
// Do database query stuff
return result;
}

ASP.NET / MVC4 Connection String to SQL Server 2008 error

I am working through an ASP.NET MVC4 tutorial from ASP.net. This is the second tutorial in which I am getting database connection errors. Here is the error:
An error occurred while getting provider information from the database. This can be caused by Entity >Framework using an incorrect connection string. Check the inner exceptions for details and ensure that >the connection string is correct.
Here are my connection strings. The first one was generated by the template, the 2nd was copied verbatim from the tutorial. I am running SQL Server 2008, not express. That may be my problem. The database is created automatically from the application as well. I do not have a login / password that I am aware of for this local db.
<add name="DefaultConnection"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-MvcMovie-20130830102032;Integrated Security=SSPI"
providerName="System.Data.SqlClient" />
<add name="MovieDBContext"
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True"
providerName="System.Data.SqlClient"/>
I've looked on connectionstrings.com & asp.net to find a resolution and I am not clear on the fix. The error has to be in the connection string, but I am unsure which one, if not both, it is.
Thanks
I just changed the data source to Data Source=. and here is the error now:
There is already an object named 'PK_dbo.Movies' in the database.
Could not create constraint. See previous errors.
I tried to delete the database in sql server and was unable to when right clicking on it and pressing delete. Any ideas?

use of universal providers and mysql

I created an asp.net mvc 4 application, and added universal providers, because I need to create a custom membership provider that read users data from a my sql database.
When I work on the developer workstation it's all ok, but when I deploy on the server, where there is not Sql Server installed i receive an error. trying to open DefaultConnection.
In the InitializeSimpleMembershipAttribute that is created from the wizard, I have this:
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: false);
this call initialize the db connection, do nothing, and is not used by the custom membership provider, but must be done at startup.
the connection string is:
add name="DefaultConnection" connectionString="Data Source=...;Initial Catalog=...;User id=...;Password=..." providerName="System.Data.SqlClient" />
the problem is that I don't know how to configure to use a mysql db and pass this control in the startup of the application.
If I have to install it in a server with Sql server installed, I configure it properly, and after the initial call the mysql membership provider works without problem, but i have problems when i cannot use this workaround, and exception is raised at the call to InitializeDatabaseConnection.
How can I fix this problem?

Entity Framework with MySql Exception - "The underlying provider failed on Open." - "Reading from the stream has failed."

We have an application that uses .NET Entity Framework 4 to connect to MySql. I've now set this up on several development machines (Windows 7) and am now deploying to Windows 2008 R2, but an exception is thrown when trying to access the database from the application.
There are two connection strings, one for use with ADO.NET and one for Entity Framework.
We are using MySql connector for .NET v 6.4.4
The exception is:
"The underlying provider failed on Open." - "Reading from the stream
has failed."
When googling the exception, most posts relate to the use of Entity Framework with SqlServer, and in these cases the problem looks to be authentication related. Since we are connecting here with the root user credentials, If this is an authentication issue, I'm not sure how to diagnose. Other applications connect to the database with the same credentials.
The connection strings are:
<add name="AppEntities" connectionString="metadata=res://*/OrmApp.AppEntities.csdl|res://*/OrmApp.AppEntities.ssdl|res://*/OrmApp.AppEntities.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;User Id=root;password=*********;Persist Security Info=True;database=app_staging;Convert Zero Datetime=True"" providerName="System.Data.EntityClient" />
<add name="AppAdoNet" connectionString="server=localhost;User Id=root;password=*********;Persist Security Info=True;database=app_staging;Convert Zero Datetime=True" providerName="System.Data.MySql" />
If anybody has experience of such an issue on MySql or can advise on how to diagnose the issue which I am presuming is at the database end, that would be appreciated.
Strange issue in the end. Answered here http://www.randombytes.me/2012/06/mysql-connector-net-reading-from-stream.html
Updated post link.
Summary:
The production server was using IIS setting 'Enable 32 bit applications' set to 'True', reverting to 'False' resolved the issue. Obviously you'll need to to check if another component in your application requires this flag set 'True'.

The provider did not return a ProviderManifestToken string error

I am trying to create a web app using ASP.Net MVC3, Entity Framework and MySQL.
I have added the following code to my Web.Config file.
<connectionStrings>
<add name="ContactContext" connectionString="server=localhost;database=contacts;uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/>
</connectionStrings>
I also have created "Person" Model , "ContactContext" in the project "Contact_Me". When I try to create a "ContactController" including Person Model and Contact context, it gives me the following error
"Unable to retrieve metadata for "Connect_Me.Models.Persons". The
provider did not return a ProviderManifestToken string"
MYSQ & MVC3 SQL connection error \ ProviderManifestToken but I am using MySQL, this is the closest question to mine. But the answer didn't solve my problem.
Thanks in advance
I know this may be very basic for a couple of you guys, but this exception is also thrown in cases where EF is unable to locate a Connection String to use.
If you-re working in a multi-layered application, make sure the connection String is added to your client application, instead of the class library that contains you data access code.
Just my 2 cents.
I got this error when my sql server was actually down. So, please be sure that your sql server is up and running.
You can also get this error if you upgrade Nuget references in an EntityFramework project that uses MySql.Data.Entity (latest version is 6.10.X) and MySql.Data (latest version is 8.0.X). Those version numbers should match. You should use the MySql.Data.EntityFramework package with MySql.Data version 8.0 and after, and the MySql.Data.Entity package with versions 6.10 and before.
There are a lot more details in this blog post: https://davidsekar.com/asp-net/mysql-error-the-provider-did-not-return-a-providermanifesttoken
The problem was with the MySQL connector/Net.
I previously used MySQL connector/Net 6.3.5 and after I uninstalled it and installed MySQL connector/Net 6.5.4 the issue was fixed. You can find latest connectors at http://www.mysql.com/products/connector/
Sometimes this issue arises because of sslmode as well, For me the solution was to add sslmode=None to connection string
I had to make a small change to my connection string from
<add name="Connection" connectionString="Server=SOMEHOST;Database=DB;Uid=USR1;Pwd=PASS1;" providerName="MySql.Data.MySqlClient" />
to
<add name="Connection" connectionString="Server=SOMEHOST;Database=DB;Uid=USR1;Pwd=PASS1;sslmode=None;" providerName="MySql.Data.MySqlClient" />
May be the error is in your connection string. Have you tried to connect to your DB instance using the above log in. try changing the connection string
connectionString="Data Source=.;Initial Catalog=contacts;Integrated Security=True uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/>
use above if you are using sql server, else if you are using sql express use below one
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=contacts;Integrated Security=True uid=root;pwd=password;" providerName="MySql.Data.MySqlClient"/>
Even though this is answered, but I have experienced the same problem and my in case it was in the connection string; I had the part "Integrated Security" when I really shouldn't have used it; I was relying on the database authentication.
I removed the "Integrated Security=True" part and it worked perfectly :)
Restarting the computer worked for me.
While this message was showing, I did not find any differences between my computer [Windows 10] and the test server where the the application was deployed with the same configuration and was working correctly there and using the same database. It means the issue was probably not connected to the database running on the test server.
Worth mentioning is there were some Windows updates pending while restarting.