On Tue, 2010-09-21 at 20:32 -0700, El wrote:
> When I executed the command below:
>
> sqlmetal /provider:MySql /server:localhost /database:MySqlSampleDb /
> user:hansel /password:rpt4wr5 /pluralize /code=mysqlsampledb.cs
...
> >>> Reading schema from MySQL database
> sqlmetal: Client does not support authentication protocol requested by
> server; consider upgrading MySQL client
>
> I have the latest Mysql.Data.dll in my GAC.
Not sufficient. sqlmetal is, for all intents and purposes, DbMetal,
thus the following applies:
http://code.google.com/p/dblinq2007/wiki/Installation#To_run_DbMetal
Specifically the "There are three ways that the ADO.NET provider can be
used with DbMetal.exe" section:
If your ADO.NET provider is present within the Global Assembly
Cache, you can edit DbMetal.exe.config (in the DbLinq
installation directory) to use an assembly-qualified type name
in the /configuration/providers/provider/@databaseConnection
attribute.
The default ADO.NET provider for MySQL is the ByteFX.Data provider. The
advantage is that ByteFX is bundled with Mono, but it's also ancient
(hence your authentication error). Thus, you should edit
e.g. /usr/lib/mono/2.0/sqlmetal.exe.config and change the MySQL provider
value. Alternatively...
> I saw some links that
> suggested adding the /databaseConnectionProvider.
>
> sqlmetal /provider:MySql /
> databaseConnectionProvider="MySql.Data.MySqlConnection, MySql.Data" /
> server:localhost /database:MySqlSampleDb /user:hansel /
> password:rpt4wr5 /debug /pluralize /code=mysqlsampledb.cs
If your mono is anything recent, it's not /databaseConnectionProvider,
it's --with-dbconnection. See 'sqlmetal /?' for details.. Furthermore,
the value needs to be a fully qualified name, which yours isn't. Thus:
sqlmetal /provider:MySql \
--with-dbconnection="MySql.Data.MySqlClient.MySqlConnection,
MySql.Data, Version=5.0.8.1, Culture=neutral, PublicKeyToken=c5687fc88969c44d" \
/server:localhost /database:MySqlSampleDb \
/user:user /password:password /debug /pluralize \
/code:mysqlsampledb.cs
Note that the above value comes from MySql.Data v5.0.8.1, so things may
have changed [0].
- Jon
[0] Pro tip: to easily get the assembly qualified name,
use /usr/bin/csharp:
$ csharp -r:path/to/MySql.Data.dll
csharp>
typeof(MySql.Data.MySqlClient.MySqlConnection).AssemblyQualifiedName;
"MySql.Data.MySqlClient.MySqlConnection, MySql.Data, Version=5.0.8.1,
Culture=neutral, PublicKeyToken=c5687fc88969c44d"
--
You received this message because you are subscribed to the Google Groups
"DbLinq" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/dblinq?hl=en.