Laravel-excel: [BUG] Fehlerimport: Objekt beginTransaction

Erstellt am 16. Jan. 2019  ·  13Kommentare  ·  Quelle: Maatwebsite/Laravel-Excel

Voraussetzungen

  • [x] Das Problem ist in der Lage, das Verhalten außerhalb Ihres Codes zu reproduzieren. Es ist auf Laravel Excel beschränkt.
  • [x] Überprüft, ob Ihr Problem noch nicht eingereicht wurde.
  • [x] Überprüft, ob keine PR eingereicht wurde, die dieses Problem behebt.

Versionen

  • PHP-Version: 7.2
  • Laravel-Version: 5.7.17
  • Paketversion: 3.1.3

Beschreibung

Ich habe die Importobjektklasse erstellt und die Bedenken von ToCollection angegeben. Beim Ausführen von Excel :: import erhalte ich eine Fehlermeldung, die in Actual Behavior unten angezeigt wird.

Schritte zum Reproduzieren

Verwenden Sie keine Transaktionsdatenbank. Wir verwenden MongoDB.

Abgesehen davon wurde der Modellimport nicht angegeben und das Paket sollte keine Datenbankvorbereitung durchführen, die durch Ereignisse vom Entwickler behandelt werden sollte.

Erwartetes Verhalten:

dd der Sammlungszeilen.

Tatsächliches Verhalten:

1) Tests\Unit\Services\Websites\WebsiteCredentialsImportServiceTest::testImportTabDelimited
Error: Call to a member function beginTransaction() on null

/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php:109
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php:93
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Database/Concerns/ManagesTransactions.php:23
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:327
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:223
/var/www/vhosts/website.local/vendor/maatwebsite/excel/src/Reader.php:96
/var/www/vhosts/website.local/vendor/maatwebsite/excel/src/Excel.php:120
/var/www/vhosts/website.local/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:223
/var/www/vhosts/website.local/app/Services/Websites/WebsiteCredentialsImportService.php:198
/var/www/vhosts/website.local/app/Services/Websites/WebsiteCredentialsImportService.php:182
/var/www/vhosts/website.local/app/Services/Websites/WebsiteCredentialsImportService.php:122
/var/www/vhosts/website.local/tests/Unit/Services/Websites/WebsiteCredentialsImportServiceTest.php:25

zusätzliche Information

<?php

namespace App\Imports\Websites;

use Illuminate\Support\Collection;
use Maatwebsite\Excel\Concerns\ToCollection;

/**
 * Class WebsiteCredentialsImport
 *
 * <strong i="29">@package</strong> App\Imports\Websites
 */
class WebsiteCredentialsImport implements ToCollection
{
    public function collection(Collection $rows)
    {
        dd(['COLLECTION' => $rows]);
    }
}
        $collection = Excel::import(
            new WebsiteCredentialsImport,
            $this->file_name,
            null,
            $this->reader_type
        );
enhancement help wanted

Hilfreichster Kommentar

Vielleicht habt ihr das gleiche Problem wie bei # 2384

Vielleicht würde meine Lösung für Sie funktionieren, versuchen Sie Folgendes:

php artisan config:clear

Manchmal, insbesondere beim Aktualisieren eines Pakets, bereinigt Laravel den Cache nicht und Ihr Paket findet die Konfigurationsdateien nicht. Somit ist der Treiber immer NULL und schlägt fehl.

Alle 13 Kommentare

Wir verwenden die Datenbanktransaktionen zur Validierung und für Batch-Einfügungen. Sie sind für die Benutzer von Eloquent / Laravel-DB sehr wichtig. Gerne führen wir einen PR zusammen, der eine Konfigurationsoption zum Deaktivieren für Benutzer bietet, die .eg Mongo verwenden

Die nächste Version enthält eine Einstellung zum Deaktivieren von Laravel-DB-Transaktionen sowie eine Möglichkeit zum Hinzufügen benutzerdefinierter Transaktionshandler

Hallo !

Ich bin in der sehr genauen Situation: Ich muss die gelesenen Daten NICHT speichern und verwende Mongo.

Könnten Sie mich bitte auf den Code verweisen, der Transaktionen deaktiviert?

Hallo !

Ich bin in der sehr genauen Situation: Ich muss die gelesenen Daten NICHT speichern und verwende Mongo.

Könnten Sie mich bitte auf den Code verweisen, der Transaktionen deaktiviert?

https://github.com/Maatwebsite/Laravel-Excel/commit/13374dab1592f00f715fa0e02541ecb52217655b#diff -19c82312ec0dbaba6a8c595db14fa56f

Relevanter Dokumentationsabschnitt: https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions

Hallo, ich bin in der gleichen Situation: Ich muss eine Excel-Datei lesen und sie in Mongodb speichern.
Ich habe das Update gelesen und der Fehler, den ich jetzt habe, ist:
"NULL-Treiber für [MaatwebsiteExcel \ Transactions \ TransactionManager] kann nicht aufgelöst werden."
Haben Sie eine Idee, wie Sie es lösen können?
Vielen Dank für das tolle Paket.

Bearbeiten: Ich habe den Import zum Sammeln verwendet und es funktioniert, aber ich weiß immer noch nicht, warum der Import in das Modell unterbrochen wird

Weil Collection keine Transaktionen verwendet. Bitte beziehen Sie sich auf meinen vorherigen Kommentar, in dem erklärt wird, wie Transaktionen deaktiviert werden.

Weil Collection keine Transaktionen verwendet. Bitte beziehen Sie sich auf meinen vorherigen Kommentar, in dem erklärt wird, wie Transaktionen deaktiviert werden.

Hallo, danke für deine schnelle Antwort.
Ich habe Ihren Kommentar gelesen, deshalb habe ich den "NULL-Treiber für [MaatwebsiteExcel \ Transactions \ TransactionManager] kann nicht aufgelöst werden" erhalten. Error.
Also bin ich zur Sammlung gewechselt

Dann geben Sie wahrscheinlich etwas Falsches in Ihre Konfiguration ein. NULL klingt nicht nach einem gültigen Treiber. 'null' (beachten Sie, dass es sich um eine Zeichenfolge handelt) ist.

Ich habe auch die gleiche Situation, ich habe die Lösung auf https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions erhalten
Aber ich weiß nicht, wie ich Custom transaction handlers erstellen und wo ich es verwenden soll

Ich habe auch Mongodb. Diese https://docs.laravel-excel.com/3.1/imports/validation.html#disable -transactions funktioniert für mich. Danke @patrickbrouwers

Vielleicht habt ihr das gleiche Problem wie bei # 2384

Vielleicht würde meine Lösung für Sie funktionieren, versuchen Sie Folgendes:

php artisan config:clear

Manchmal, insbesondere beim Aktualisieren eines Pakets, bereinigt Laravel den Cache nicht und Ihr Paket findet die Konfigurationsdateien nicht. Somit ist der Treiber immer NULL und schlägt fehl.

Vielleicht habt ihr das gleiche Problem wie bei # 2384

Vielleicht würde meine Lösung für Sie funktionieren, versuchen Sie Folgendes:

php artisan config:clear

Manchmal, insbesondere beim Aktualisieren eines Pakets, bereinigt Laravel den Cache nicht und Ihr Paket findet die Konfigurationsdateien nicht. Somit ist der Treiber immer NULL und schlägt fehl.

Beste Antwort

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen