Γεια χαρά σε όλους,
όταν προσπαθώ να εκτελέσω την παρακάτω stored procedure:
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertTranslation`(
IN PTranslation TEXT,
IN PCultureId INT,
IN PPhraseId BIGINT,
OUT NewId BIGINT)
BEGIN
INSERT INTO Translations (Translation, CultureId, PhraseId)
VALUES (PTranslation, PCultureId, PPhraseId);
SET NewId = LAST_INSERT_ID();
END$$
DELIMITER ;
παίρνω το παρακάτω σφάλμα:
Incorrect string value: '\xE7\x94\xA8\xE6\x88\xB7...' for column 'PTranslation' at row 1
το πεδίο PTranslation έχει CharSet utf8 και collation utf8_general_ci αφού υποστηρίζει πολλές γλώσσες όπως κινέζικα, αραβικά κτλ.
ο .net κώδικας που εκτελεί την εισαγωγή είναι ο παρακάτω:
public long Save()
{
long newId = -1;
using (MySqlConnection con = new MySqlConnection(Settings.Default.RESXGeneratorConnection))
{
con.Open();
using (MySqlCommand cmd = new MySqlCommand(@"InsertTranslation", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("PTranslation", TranslatedPhrase);
cmd.Parameters["PTranslation"].Direction = ParameterDirection.Input;
cmd.Parameters.AddWithValue("PCultureId", Language.Id);
cmd.Parameters["PCultureId"].Direction = ParameterDirection.Input;
cmd.Parameters.AddWithValue("PPhraseId", OriginalPhrase.Id);
cmd.Parameters["PPhraseId"].Direction = ParameterDirection.Input;
cmd.Parameters.Add("NewId", MySqlDbType.Int64);
cmd.Parameters["NewId"].Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
newId = Convert.ToInt64(cmd.Parameters["@NewId"].Value);
}
}
return newId;
}
Μήπως έχει συναντήσει κάποια/ος συνάδελφος κάτι παρόμοιο?