1. 程式人生 > >關於Linux和Windows下部署mysql.data.dll的註冊問題

關於Linux和Windows下部署mysql.data.dll的註冊問題

mysql ado.net connector下載地址:

http://dev.mysql.com/downloads/connector/net/

選擇版本:

Generally Available Releases(1)是釋出版(bug什麼的較少的版本吧),而Development Releases(2)是開發版

我們採用1版本

Windows (x86, 32-bit), MSI Installer

該版本是window下的安裝版,如果你安裝了這個版本的話,在本機除錯的時候可以不用再次註冊MySql.Data.MySqlClient,vs會找到dbprovider為此的dll,

如果重複註冊會報錯

建立 system.data 的配置節處理程式時出錯: 列“InvariantName”被約束為是唯一的。值“MySql.Data.MySqlClient”已存在。

如下圖 

.Net & Mono (Architecture Independent), ZIP Archive

如果是這個版本的話,那麼你需要手動註冊下dll,否則除錯的時候或者部署到Linux伺服器上的時候MySql.Data.dll是無法被載入的,所以要手工註冊下程式碼如下

    <system.data>
        <DbProviderFactories>
            <
add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/> </DbProviderFactories
> </system.data>

對於

type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"

這段根據自己的版本改變:C:\Windows\Assembly

注意了:這樣就會在windows下除錯的時候報重複註冊的錯了。

我糾結了:在群友熬夜後如頭像的幫助下解決了

在註冊前先移除,上面web.config的配置改變為

    <system.data>
        <DbProviderFactories>
            <remove invariant="MySql.Data.MySqlClient"></remove>//先移除,接下來註冊
            <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient"
                description=".Net Framework Data Provider for MySQL"
                type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data,Version=6.9.0.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
            </DbProviderFactories>
    </system.data>

ok,解決了,多謝熬夜後如頭像的幫助。我也記錄此問題來幫助以後遇到這個問題的朋友。