2015-12-03 3 views
2

Я пытаюсь заставить клиент Unity устанавливать соединение с сервером MySQL исключительно для чтения. Я получаю сообщение об ошибке при подключении.Unity3D подключение к MySQL ошибка

Мой код:

using UnityEngine; 
using System; 
using System.Data; 
using System.Text; 
using System.Collections; 
using System.Collections.Generic; 
using System.Security.Cryptography; 
using MySql.Data; 
using MySql.Data.MySqlClient; 

public class DatabaseHandler : MonoBehaviour { 

    public string host, database, user, password; 
    public bool pooling = true; 

    private string connectionString; 
    private MySqlConnection con = null; 
    private MySqlCommand cmd = null; 
    private MySqlDataReader rdr = null; 

    private MD5 _md5Hash; 

    void Awake() { 

     DontDestroyOnLoad(this.gameObject); 
     connectionString = "Server="+host+";Database="+database+";User ID="+user+";Password="+password+";Pooling="; 
     if (pooling){ 
      connectionString += "true;"; 
     } else { 
      connectionString += "false;"; 
     } 

     try { 
      con = new MySqlConnection(connectionString); 
      con.Open(); // THIS is line 47 in the error 
      Debug.Log ("Mysql State: " + con.State); 
     } catch (Exception e) { 
      Debug.Log (e); // THIS is line 51 in the error 
     } 

    } 
} 

Ошибка:

System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. at System.Collections.Generic.Dictionary`2[System.String,MySql.Data.MySqlClient.CharacterSet].get_Item (System.String key) [0x000a2] in /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/Dictionary.cs:150 at MySql.Data.MySqlClient.CharSetMap.GetCharacterSet (DBVersion version, System.String CharSetName) [0x00000] in :0 at MySql.Data.MySqlClient.CharSetMap.GetEncoding (DBVersion version, System.String CharSetName) [0x00000] in :0 at MySql.Data.MySqlClient.Driver.Configure (MySql.Data.MySqlClient.MySqlConnection connection) [0x00000] in :0 at MySql.Data.MySqlClient.MySqlConnection.Open () [0x00000] in :0 at (wrapper remoting-invoke-with-check) MySql.Data.MySqlClient.MySqlConnection:Open() at DatabaseHandler.Awake() [0x0007a] in /Users/ThaMacPro/Desktop/Unity Projects/youtubeMySQL/Assets/Scripts/DatabaseHandler.cs:47 UnityEngine.Debug:Log(Object) DatabaseHandler:Awake() (at Assets/Scripts/DatabaseHandler.cs:51)

Может кто-нибудь сказать мне, как может быть исправлена ​​эта ошибка?

Спасибо!

+0

похоже, что вы предоставляете неверную строку соединения; забудьте об единстве, попробуйте googling для этой конкретной ошибки mysql. – Roberto

+0

Спасибо @Roberto, после поиска более конкретных ключевых слов я столкнулся с этим, который решил его. http://stackoverflow.com/questions/25933522/why-it-doesnt-work-when-i-use-mysqlconnection-open – wsgb

+0

Вы хотите указать эту ссылку в качестве ответа? Я буду отмечать это как ответ @Roberto – wsgb

ответ

0

Решение: Why it doesn't work when I use MysqlConnection.open()?

бы добавить кодировку в connnectionString.

Спасибо @Roberto! :-)

+0

Я столкнулся с большим количеством проблем с той же ошибкой, с которой большинство людей не сталкивалось, поэтому я использовал другой хост (rackspace) для моей базы данных MySQL. Больше проблем. – wsgb

Смежные вопросы