2016-06-23 20 views
0

Ich versuche, eine leere MySQL-Datenbank mit Python zu aktualisieren.Fehler beim Einfügen Zeile in MySQL-Datenbank von Python

Dies ist der Fehler Ich erhalte:

pymysql.err.InternalError: (1416, 'Cannot get geometry object from data you send to the GEOMETRY field')

Hier ist der problematische Code:

try: 
    with connection.cursor() as cursor: 
     # Create a new record 
     sql = "INSERT INTO `projects` (`name`, `country`, `activation_date`, `active`) VALUES (%s, %s, %s, %s)" 
     cursor.execute(sql, ('Nate', 'USA', '2016-06-23 09:11:32', '1')) 

    connection.commit() 

finally: 
    connection.close() 

Hier ist, was die Tabelle wie in der Datenbank sucht (es ist leer):

enter image description here

enter image description here

+0

Könnten Sie die Definition der Tabelle einschließen (einschließlich Indizes und Trigger)? Es ist nicht ganz offensichtlich aus Ihrem Post, was den Fehler auslöst. –

+0

Hilft das? – Nate

+1

Ja, ich denke, Sie verwenden den Datentyp ['LineString'] (https://dev.mysql.com/doc/refman/5.7/en/gi-linestring-property-functions.html) falsch und gemeint Verwenden Sie einen Varchar- oder Texttyp. [Ein LineString besteht aus Punkten] (https://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html) und ist für räumliche Daten gedacht, nicht für Text. –

Antwort

1

Es sieht so aus, als ob Sie den MySQL-Typ linestring zur Darstellung einer Zeichenkette verwenden, während in MySQL der korrekte Typ für eine Zeichenkette text oder varchar(<some_length>) ist. linestring ist eine Darstellung einer geometrischen Linie, wie Sie hier sehen können: https://dev.mysql.com/doc/refman/5.7/en/gis-linestring-property-functions.html

Um dies zu beheben, einfach die Spaltentypen von name und country-varchar(<some-length>) oder text ändern. Siehe: http://dev.mysql.com/doc/refman/5.7/en/char.html

+0

Danke allen, das hat es behoben! – Nate