#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:
У меня была такая же проблема, и я решил ее, выполнив следующие шаги:
- Создайте регистр копирования вместо библиотеки DLL:
#cp mysql.data.dll MySql.Data.dll
- Установите соединитель
#gacutil -i -package 2.0 MySql.Data.dll
Это устанавливается в GAC, а также добавляет символическую ссылку в /usr / lib / mono / 2.0
- Если сборка не отображается в 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