Laden...

MySQL: Fatal error encountered during command execution

Erstellt von Der_Michel vor 14 Jahren Letzter Beitrag vor 14 Jahren 7.037 Views
D
Der_Michel Themenstarter:in
4 Beiträge seit 2007
vor 14 Jahren
MySQL: Fatal error encountered during command execution

Hallo zusammen,

ich habe mit einer MySQL-Datenbank folgendes Problem: Ich kann mich verbinden und Daten auslesen, aber jedes Mal wenn ich etwas hinzufügen will bekomme ich zu hören:


MySql.Data.MySqlClient.MySqlException: Fatal error encountered during command execution. 
---> MySql.Data.MySqlClient.MySqlException: Fatal error encountered attempting to read the resultset. 
---> MySql.Data.MySqlClient.MySqlException: Reading from the stream has failed. 
---> System.IO.EndOfStreamException: Es wurde versucht, über das Ende des Streams hinaus zu lesen.
   bei MySql.Data.MySqlClient.MySqlStream.ReadFully(Stream stream, Byte[] buffer, Int32 offset, Int32 count)
   bei MySql.Data.MySqlClient.MySqlStream.LoadPacket()
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei MySql.Data.MySqlClient.MySqlStream.LoadPacket()
   bei MySql.Data.MySqlClient.MySqlStream.ReadPacket()
   bei MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int32& insertedId)
   bei MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int32& insertedId)
   bei MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId)
   bei MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   bei MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
   bei MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
   bei MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()

Es handelt sich um eine sehr simple Film-Datenbank um mal ein wenig mit MySQL "rumzuspielen".

Dieser Code erzeugt den Fehler:


string command = String.Format("INSERT INTO {0} (Title, Director, Genre, Year) " +
                                     "VALUES (?Title, ?Director, ?Genre, ?Year)", "tbl_Movies");
      
using (MySqlCommand cmd = new MySqlCommand(command, _connection))
{
   cmd.Prepare();
   cmd.Parameters.AddWithValue("?Title", movie.Title);
   cmd.Parameters.AddWithValue("?Director", movie.Director);
   cmd.Parameters.AddWithValue("?Genre", movie.Genre);
   cmd.Parameters.AddWithValue("?Year", movie.Year);

   cmd.ExecuteNonQuery();
}

Ich hab schon überprüft ob die DB vielleicht voll ist (bzw. maximal erlaubte Größe erreicht hat), aber da ist noch reichlich Platz frei.
Ich benutzte den Connector/Net 6.2.2. Kann mit jemand sagen woran das liegt?

Gruß,
Michel

F
10.010 Beiträge seit 2004
vor 14 Jahren

Maskiere bitte mal die Tabellen und Spaltennamen.

D
Der_Michel Themenstarter:in
4 Beiträge seit 2007
vor 14 Jahren

Sorry für die späte Antwort... musste spontan beruflich verreisen. 🙄
Was genau meinst Du mit maskieren? Bin noch ein totaler Neuling was Datenbanken angeht...

D
496 Beiträge seit 2005
vor 14 Jahren

ich würde den commandtext anders zuweisen und das prepare nach der parameterzuweisung aufrufen also so:



string command = @"INSERT INTO tbl_Movies (Title, Director, Genre, Year) 
                                     VALUES (?Title, ?Director, ?Genre, ?Year)";

MySqlCommand cmd = new MySqlCommand(command, _connection);

   
cmd.Parameters.AddWithValue("Title", movie.Title);
cmd.Parameters.AddWithValue("Director", movie.Director);
cmd.Parameters.AddWithValue("Genre", movie.Genre);
cmd.Parameters.AddWithValue("Year", movie.Year);

cmd.Prepare();

cmd.ExecuteNonQuery();


ach ja die fragezeichen sind bei der parameterzuweisung glaub ich auch nicht nötig

"Programming is similar to sex. If you make a mistake, you have to support it for the rest of your life."

F
10.010 Beiträge seit 2004
vor 14 Jahren

@Der_Michel :
Dann solltest Du das mit den Grundlagen schnellstens nachholen.
[Hinweis] Wie poste ich richtig? punkt 1.1.1
Und was für C# gilt, gilt dann auch für SQL .