Ergebnis 1 bis 8 von 8

Thema: [Erledigt] Import Integer darf nicht leer sein?

  1. #1
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard [Erledigt] Import Integer darf nicht leer sein?

    Hallo,

    habe ein Import der die ganze Zeit funktionierte, jetzt stört es auf einmal die DB das manchmal das Fled leer ist.

    DB-Feld:
    PHP-Code:
            'Q1_ID' => array
            (
                
    'sql'                     => "int(11) unsigned NOT NULL default '0'"
            
    ), 
    Fehlermeldung: Invalid datetime format: 1366 Incorrect integer value: '' for column table.Q1_ID at row 1

    Das Feld in der CSV kann eben auch leer sein. Wenn ich es auf varchar umstelle klappt es allerdings aber da es ne reine Zahl ist unnötig.

    Kann das mit dem sql_mode zusammenhängen?
    Liebe Grüße
    WebRoxx


  2. #2
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Das Feld in der CSV kann eben auch leer sein.
    Laut deiner Datenbankdefinition darf es das aber nicht. Wenn du leere Werte in diesem Feld erlauben willst, dann muss die Datenbankdefinition so aussehen:
    Code:
    int(11) unsigned NULL
    Hat übrigens nichts mit Contao zu tun.
    » sponsor me via GitHub or PayPal or Revolut

  3. #3
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Habs grad getestet, auch da kommt der fehler.

    Entferne ich dieses Code aus der config.yml funktioniert der import

    Code:
    doctrine:
      dbal:
        connections:
          default:
            options:
              1002: "SET SESSION sql_mode=(SELECT CONCAT(@@sql_mode, ',TRADITIONAL'))"
    Geändert von WebRoxx (04.01.2022 um 13:58 Uhr)
    Liebe Grüße
    WebRoxx


  4. #4
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Sorry, hatte ursprünglich deinen Thread editiert statt gequoted - passiert mir als Moderator manchmal . Dein ursprünglicher Text ist leider verloren gegangen, müsstest du nochmal rein-editieren.
    » sponsor me via GitHub or PayPal or Revolut

  5. #5
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Zitat Zitat von WebRoxx Beitrag anzeigen
    Habs grad getestet, auch da kommt der fehler.
    Poste die Fehlermeldung und poste die Ausgabe von
    Code:
    SHOW COLUMNS FROM table;
    » sponsor me via GitHub or PayPal or Revolut

  6. #6
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Poste die Fehlermeldung und poste die Ausgabe von
    Code:
    SHOW COLUMNS FROM table;
    Naja Fehler ist halt dieser:
    SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '' for column `table`.`Q1_ID` at row 1

    Das steht in der Ausgabe:
    Q1_ID int(10) unsigned YES NULL

    EDIT: das andere hab ich oben wieder eingefügt
    Liebe Grüße
    WebRoxx


  7. #7
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.063
    Partner-ID
    10107

    Standard

    Aber ich denke das Problem ist das Import-Script an sich. Ein leeres CSV Feld wird als leerer String interpretiert. Das ist jedoch falsch, je nach Tabellendefinition.

    Da du leider nicht gepostet hast, wie genau du den Import überhaupt durchführst, lässt sich da jetzt auch schwer sagen, wie du es richtig machen kannst. Jedenfalls gibt es aber im Contao Legacy Framework die Funktion Widget::getEmptyValueByFieldType
    PHP-Code:
    use Contao\Widget;

    $emptyValue Widget::getEmptyValueByFieldType($GLOBALS['TL_DCA']['tl_your_table']['fields']['Q1_ID']['sql']); 


    Zitat Zitat von WebRoxx Beitrag anzeigen
    Entferne ich dieses Code aus der config.yml funktioniert der import

    Code:
    doctrine:
      dbal:
        connections:
          default:
            options:
              1002: "SET SESSION sql_mode=(SELECT CONCAT(@@sql_mode, ',TRADITIONAL'))"
    Ja, klar, weil da werden fehlerhafte Operationen wie diese einfach ohne Fehlermeldung verschluckt. Was ja nicht korrekt ist.
    » sponsor me via GitHub or PayPal or Revolut

  8. #8
    Alter Contao-Hase
    Registriert seit
    18.07.2012.
    Ort
    Löbau
    Beiträge
    1.140

    Standard

    Ja okay, hab die 4 Felder die es betrifft einfach abgefangen beim import und ergänzt. passt jetzt

    Danke
    Liebe Grüße
    WebRoxx


Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •