LONGTEXT reicht nicht für 1.000 Zeichen aus?

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    LONGTEXT reicht nicht für 1.000 Zeichen aus?

    Hallo zusammen,

    ich habe ein Problem mit vb.net. Beim Debuggen bekomme ich die Fehlermeldung:

    MySqlException wurde nicht behandelt.
    Data too long for column 'Dokument_ID_array' at row 1.

    Meine Spalte Dokument_ID_array war zuvor auf Data Type: VARCHAR(1000)
    Dann habe ich daraus: LONGTEXT gemacht und es kommt wieder die selbe Fehlermeldung.

    Der String der in Dokument_ID_array abgespeichert wird hat die Form: "490;491;492;493;494;495;496...;632"

    Ich hoffe jemand kann mir sagen was ich falsch mache.

    Vielen Dank im Voraus.
    Name der Exception und MeldungsText angeben:

    VB.NET-Quellcode

    1. MySqlException wurde nicht behandelt.
    2. Data too long for column 'Dokument_ID_array' at row 1
    3. Hinweise zur Fehlerbehebung:
    4. ------
    5. Ausnahmedetail:
    6. MySql.Data.MySqlClient.MySqlException wurde nicht behandelt.
    7. ErrorCode=-2147467259
    8. HResult=-2147467259
    9. Message=Data too long for column 'Dokument_ID_array' at row 1
    10. Number=1406
    11. Source=MySql.Data
    12. StackTrace:
    13. bei MySql.Data.MySqlClient.MySqlStream.ReadPacket()
    14. bei MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& insertedId)
    15. bei MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affectedRows, Int64& insertedId)
    16. bei MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
    17. bei MySql.Data.MySqlClient.MySqlDataReader.NextResult()
    18. bei MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
    19. bei MySql.Data.MySqlClient.MySqlCommand.ExecuteReader()
    20. bei MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
    21. bei -.SQL.sqlUpdate(String table, String[] columns, Object[] values, Int32 id, String where, String schema, Boolean from_offline_db) in C:\Users\AF1PRGK\Desktop\-Beta_test_2\-\-\SQL.vb:Zeile 1328.
    22. bei -.Tool_importieren.mpi_importDateienInPepDok(String messpr_ordner, Int32 pepID, Int32 messprID) in C:\Users\AF1PRGK\Desktop\-Beta_test_2\-\-\Tool_importieren.vb:Zeile 3296.
    23. bei -.Tool_importieren.mpv_AltDatenImport() in C:\Users\AF1PRGK\Desktop\-Beta_test_2\-\-\Tool_importieren.vb:Zeile 4008.
    24. bei -.Form_main.tsmiAltdatenImportieren_Click(Object sender, EventArgs e) in C:\Users\AF1PRGK\Desktop\-Beta_test_2\-\-\Form_main.vb:Zeile 1892.
    25. bei System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
    26. bei System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
    27. bei System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
    28. bei System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
    29. bei System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
    30. bei System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
    31. bei System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
    32. bei System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
    33. bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    34. bei System.Windows.Forms.Control.WndProc(Message& m)
    35. bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
    36. bei System.Windows.Forms.ToolStrip.WndProc(Message& m)
    37. bei System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
    38. bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    39. bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    40. bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    41. bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    42. bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    43. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    44. bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    45. bei System.Windows.Forms.Application.Run(ApplicationContext context)
    46. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    47. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    48. bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    49. bei -.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
    50. InnerException:


    Code-Ausschnitt posten

    VB.NET-Quellcode

    1. sqlStm = sqlStm.Trim()
    2. sqlStm &= ";"
    3. sqlOpen(schema)
    4. sqlCmd = New MySqlCommand
    5. sqlCmd.CommandText = sqlStm
    6. If fiInsert.Length > 0 Then
    7. Dim fsInsert As FileStream
    8. Dim szInsert As Integer
    9. Dim baInsert() As Byte
    10. For i As Integer = 0 To UBound(fiInsert)
    11. fsInsert = New FileStream(fiInsert(i).FullName, FileMode.Open, FileAccess.Read)
    12. szInsert = CInt(fiInsert(i).Length)
    13. ReDim baInsert(szInsert)
    14. fsInsert.Read(baInsert, 0, szInsert)
    15. fsInsert.Close()
    16. sqlCmd.Parameters.AddWithValue("?File" & CStr(i), baInsert)
    17. Next
    18. End If
    19. sqlCmd.Connection = sqlCon
    20. sqlCmd.ExecuteNonQuery()
    21. End If
    22. sqlClose(from_offline_db)
    23. End Sub


    VB.NET-Quellcode

    1. Public sqlCon As MySqlConnection
    2. Public sqlCmd As MySqlCommand
    3. Public sqlDR As MySqlDataReader
    4. Public sqlDA As MySqlDataAdapter
    5. Public sqlHost As String
    6. Public sqlUsr As String
    7. Public sqlPwd As String
    8. Public sqlStm As String
    9. Public sqlCon_lokal As SqlServerCe.SqlCeConnection
    10. Public sqlCmd_lokal As SqlServerCe.SqlCeCommand
    11. Public sqlDR_lokal As SqlServerCe.SqlCeDataReader
    12. Public sqlDA_lokal As SqlServerCe.SqlCeDataAdapter



    Fehlerzeile angeben

    Fehlerzeile bei:

    VB.NET-Quellcode

    1. sqlCmd.ExecuteNonQuery()


    Aufgerufen wird dieser Sub von hier in Zeile 3:

    VB.NET-Quellcode

    1. If Not (";" & dokID_arr & ";").Contains(";" & idVorhanden & ";") Then 'Wenn Dokument_ID_Array die Aktuelle ID noch nicht enthält
    2. dokID_arr = dokID_arr & ";" & CStr(idVorhanden) 'Aktuelle ID in Dokument_ID_Array anhängen
    3. sqlUpdate("PEP", {"Dokument_ID_array"}, {dokID_arr}, pepID) 'Neue Dokument_ID_Array in Datenbank schreiben
    4. End If


    Inhalt von dokID_arr:

    VB.NET-Quellcode

    1. "490;491;492;493;494;495;496;497;498;499;500;501;502;503;504;505;506;507;508;509;510;511;512;513;514;515;516;517;518;519;520;521;522;523;524;525;526;527;528;529;530;531;532;533;534;535;536;537;538;539;540;541;542;543;544;545;546;547;548;549;550;551;552;553;554;555;556;557;558;559;560;561;562;563;564;565;566;567;568;569;570;571;572;573;574;575;576;577;578;579;580;581;582;583;584;585;586;587;588;589;590;591;592;593;594;595;596;597;598;599;600;601;602;603;604;605;606;607;608;609;610;611;612;613;614;615;616;617;618;619;620;621;622;623;624;625;626;627;628;629;630;631;632;633;634;635;636;637;638;639;640;641;642;643;644;645;646;647;648;649;650;651;652;653;654;655;656;657;658;659;660;661;662;663;664;665;666;667;668;669;670;671;672;673;674;675;676;677;678;679;680;681;682;683;684;685;686;687;688;689;690;691;692;693;694;695;696;697;698;699;700;701;702;703;704;705;706;707;708;709;710;711;712;713;714;715;716;717;718;719;720;721;722;723;724;725;726;727;728;729;730;731;732;733;734;735;736;737;740;738;739"


    = 1005 Zeichen


    Fehlverhalten angeben:

    Sobald die Variable mehr als 1000 Zeichen hat, in diesem Fall 1005 kommt diese Fehlermeldung.
    Diese Fehlermeldung tritt mit den Einstellungen der Spalte Dokument_ID_array in MYSQL WORKBENCH mit Datentyp VARCHAR(1000), VARCHAR(8000) und LONGTEXT auf.


    Erwünschtes Verhalten angeben
    Die Spalte Dokument_ID_array soll mehr als 1000 Zeichen speichern können, damit die Fehlermeldung nicht auftaucht.
    sooo überausführlich musses garnet sein.
    Weil bei ganz viel geht auch mal was unter, zB das hier ist nicht ganz klar:
    Aufgerufen wird dieser Sub von hier in Zeile 3:
    Welche Sub?
    Ich nehme an, du meinst dein "Code-Ausschnitt"-Snippet.
    Leider fehlt da der Sub ausgerechnet der Kopf, sodass ich weder erkennen kann, ob diese Sub gemeint ist (nehme ich aber an), noch, wie die Parameter dort heissen, die ihr übergeben werden.

    Auch gut wäre, wenn ich den CommandText von sqlCmd sehen könnte, also was in sqlStm nu drinne steht (hihi - die ZusatzRegel).

    Edit:
    Ich sag aber gleich, dass ich nicht wirklich eine Idee habe. Ich hatte gedacht, evtl. sei ein Dataset beteiligt - sieht aber nun nicht so aus.
    Und das Verhalten ist ja so, als ob die Umstellung des SpaltenTyps auf LongText ignoriert wird.
    Also ein Fehler nicht im Code sondern in der DB.
    Von MySql ich keine Ahnung - kann es sein, dass da bei LongText zusätzlich noch ein Parameter angegeben werden kann? Dann steht der ja vlt. nachwievor auf 1000. Aber das ist ins Blaue hinein...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „ErfinderDesRades“ ()

    hihi - ich sag ja gelegentlich: Das Forum hilft, auch wenn man den Eindruck hat, es bringt garnix.
    Hier etwa ham wir den vb.net-Code angeguckt - hat nix gebracht, oder eben doch, nämlich dasses daran wohl weniger wahrscheinlich liegt, und also die Db nochmal genauer anzugucken war. Und das hats dann gebracht :)