Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehlermeldung bei Oracle migrat:fresh

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehlermeldung bei Oracle migrat:fresh

    Hallo,

    ich habe grade eine neue Instanz von Laravel 6.8 erstellt mit einer Oracel-Datenverbindung und Auth-Extension.

    ich habe die Datenbank-Tabelle über "php artisan migrate" erstellt. anschließend habe ich die Migration geändert und wollte diese über "php artisan migrate:fresh" updaten.

    anschließend habe ich folgende Fehlermeldung in der PowerShell bekommen:

    HTML-Code:
       Illuminate\Database\QueryException  : Error Code    : 4098
    Error Message : ORA-04098: Trigger 'SYS.DELETE_ENTRIES' ist ungültig und konnte nicht neu bestätigt werden
    ORA-06512: in Zeile 3
    ORA-06512: in Zeile 3
    Position      : 0
    Statement     : BEGIN
                FOR c IN (SELECT table_name FROM user_tables) LOOP
                EXECUTE IMMEDIATE ('DROP TABLE "' || c.table_name || '" CASCADE CONSTRAINTS');
                END LOOP;
    
                FOR s IN (SELECT sequence_name FROM user_sequences) LOOP
                EXECUTE IMMEDIATE ('DROP SEQUENCE ' || s.sequence_name);
                END LOOP;
    
                END;
    Bindings      : []
     (SQL: BEGIN
                FOR c IN (SELECT table_name FROM user_tables) LOOP
                EXECUTE IMMEDIATE ('DROP TABLE "' || c.table_name || '" CASCADE CONSTRAINTS');
                END LOOP;
    
                FOR s IN (SELECT sequence_name FROM user_sequences) LOOP
                EXECUTE IMMEDIATE ('DROP SEQUENCE ' || s.sequence_name);
                END LOOP;
    
                END;)
    
      at C:\xampp\htdocs\VirtualServer\dev\Projekte\ac_admin\vendor\laravel\framework\src\Illuminate\Database\Connection.php:669
        665|         // If an exception occurs when attempting to run a query, we'll format the error
        666|         // message to include the bindings with SQL, which will make this exception a
        667|         // lot more helpful to the developer instead of just the database's errors.
        668|         catch (Exception $e) {
      > 669|             throw new QueryException(
        670|                 $query, $this->prepareBindings($bindings), $e
        671|             );
        672|         }
        673|
    
      Exception trace:
    
      1   Yajra\Pdo\Oci8\Exceptions\Oci8Exception::("Error Code    : 4098
    Error Message : ORA-04098: Trigger 'SYS.DELETE_ENTRIES' ist ungültig und konnte nicht neu bestätigt werden
    ORA-06512: in Zeile 3
    ORA-06512: in Zeile 3
    Position      : 0
    Statement     : BEGIN
                FOR c IN (SELECT table_name FROM user_tables) LOOP
                EXECUTE IMMEDIATE ('DROP TABLE "' || c.table_name || '" CASCADE CONSTRAINTS');
                END LOOP;
    
                FOR s IN (SELECT sequence_name FROM user_sequences) LOOP
                EXECUTE IMMEDIATE ('DROP SEQUENCE ' || s.sequence_name);
                END LOOP;
    
                END;
    Bindings      : []
    ")
          C:\xampp\htdocs\VirtualServer\dev\Projekte\ac_admin\vendor\yajra\laravel-pdo-via-oci8\src\Pdo\Oci8\Statement.php:183
    
      2   Yajra\Pdo\Oci8\Statement::execute()
          C:\xampp\htdocs\VirtualServer\dev\Projekte\ac_admin\vendor\laravel\framework\src\Illuminate\Database\Connection.php:463
    


    Hast Du einen Tipp wie ich dies beheben könnte?



  • #2
    Der genannte Trigger ist ungültig. Du musst den mit einem geeigneten Tool auf der DB untersuchen und reparieren.
    Oracle recompliliert dann automatisch alles andere.

    Ob das alles so gemeint ist, oder ob das ein bug im migrate ist, kann ich nicht beurteilen.

    Kommentar


    • #3
      Nachtrag:
      Ich verwende diese Frameworks nicht, daher kein Plan was Du da treibst. Dachte zunächst, es geht um Tabellen von Dir.
      Da aber im Fehler "sys... " auftaucht:
      Hast Du die Installation des Frameworks oder Deine eigene Persistenzschicht über den User Sys gemacht? Das wäre sicher nicht im Sinne des Erfinders. Der Rest der Meldung sieht so aus, als ob er da nun fröhlich Tabellen löscht. Damit ist die DB wahrscheinlich einigermaßen beschädigt.

      Zur Info:
      Oracle DB verwaltet extra User - und Schema Objekte. Wenn man damit sinnvoll arbeiten will, definiert man als erstes einen eigenen Nutzer/Schema, darin werden dann Tabellen usw. angelegt.
      Nutzt man (irgend-)ein Framework gilt das um so mehr. Das Framework kann vollkommen unabhängig von den "Nutz"Daten auch unter einem eigenen User laufen.

      Bei der Installation muss man die zu verwendenden User / Schema wahrscheinlich angeben, hier sys zu nehmen ist schlecht.


      Kommentar

      Lädt...
      X