Соединитель C # MySQL / проблемы с сетью

#c# #mysql #connector-net #idbconnection

#c# #mysql #соединитель-сеть #idbconnection

Вопрос:

В настоящее время выполняется Mono. Я загрузил MySQL и установил connector / net в свою папку gac, расположенную в / usr / lib / mono / gac. Проблема в том, что каждый раз, когда я пытаюсь запустить его с помощью простого теста подключения, я получаю следующую ошибку:

 ** (/home/holland/Code/csharp/test/Test/bin/Debug/Test.exe:10278): WARNING **: The following assembly referenced from /home/holland/Code/csharp/test/Test/bin/Debug/Test.exe could not be loaded:
     Assembly:   MySql.Data    (assemblyref_index=1)
     Version:    6.4.4.0
     Public Key: c5687fc88969c44d
The assembly was not found in the Global Assembly Cache, a path listed in the MONO_PATH environment variable, or in the location of the executing assembly (/home/holland/Code/csharp/test/Test/bin/Debug/).


** (/home/holland/Code/csharp/test/Test/bin/Debug/Test.exe:10278): WARNING **: Could not load file or assembly 'MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies.

** (/home/holland/Code/csharp/test/Test/bin/Debug/Test.exe:10278): WARNING **: Missing method .ctor in assembly /home/holland/Code/csharp/test/Test/bin/Debug/Test.exe, type MySql.Data.MySqlClient.MySqlConnection

** (/home/holland/Code/csharp/test/Test/bin/Debug/Test.exe:10278): WARNING **: Could not load file or assembly 'MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies.

** (/home/holland/Code/csharp/test/Test/bin/Debug/Test.exe:10278): WARNING **: Missing method .ctor in assembly /home/holland/Code/csharp/test/Test/bin/Debug/Test.exe, type MySql.Data.MySqlClient.MySqlConnection

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' or one of its dependencies.
File name: 'MySql.Data, Version=6.4.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'
  at Test.MainClass.Main (System.String[] args) [0x00000] in <filename unknown>:0 
  

Это должен быть файл сборки, если я правильно помню

Вот мой код:

 using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using MySql.Data.MySqlClient;

namespace Test
{
    public class Database
    {
        public Database()
        {

        }

        public static IDbConnection MainConnect()
        {
            string connectionInfo = 
            "Server=localhost;" 
            "Database=ecom_main;" 
            "User ID=root;" 
            "Password=xxxxxxx" 
            "Pooling=false;";

            return new MySqlConnection(connectionInfo);
        }
  
 using System;
using System.Data;
using MySql.Data.MySqlClient;

namespace Test
{
    class MainClass
    {
        public static void Main (string[] args)
        {
            IDbConnection dbMain = Database.MainConnect();

            Console.WriteLine(dbMain);
        }
    }
}
  

Комментарии:

1. вы проверили, что это та же папка, что и переменная MONO_PATH?

2. Где находится переменная MONO_PATH?

3. Как вы установили сборку? Вы использовали gacutil?

4. MONO_PATH — это переменная среды, и, как говорит Джон, вы использовали gacutil для ее регистрации в GAC, размещение ее в папке не всегда работает.

5. Обновление: я выполнил экспорт MONO_PATH в каталог, и, к сожалению, я ничего не смог получить.

Ответ №1:

У меня была такая же проблема, и я решил ее, выполнив следующие шаги:

  1. Создайте регистр копирования вместо библиотеки DLL:
#cp mysql.data.dll MySql.Data.dll
  1. Установите соединитель
    #gacutil -i -package 2.0 MySql.Data.dll

    Это устанавливается в GAC, а также добавляет символическую ссылку в /usr / lib / mono / 2.0

  2. Если сборка не отображается в monodevelop, вы можете добавить ссылку на dll в проекте в /usr/lib/mono/2.0

информация:http://dev.mysql.com/doc/refman/5.1/en/connector-net-installation-unix.html

Комментарии:

1. Столкнулся с той же проблемой. Было достаточно просто сделать это сенсорным (под управлением Ubuntu). Спасибо.

2. То же самое для меня. Переименование mysql.data.dll в MySql.Data.dll позволяет mono работать без каких-либо проблем.

3. Мне также помогло сделать его чувствительным к регистру, смешно: p