2014-09-16 8 views
11

Ich habe dieses Problem jedes Mal, wenn ich versuche, ein JSON-Objekt mittlerer Größe mit meiner Datenbank zu synchronisieren, ausgeführt, damit wir einige Berichte darüber erstellen können. Aus dem Blick auf das, was dazu führen kann, bin ich auf diese Zusammenhänge gestoßen.Allgemeiner Fehler: 1615 Vorbereitete Anweisung muss neu erstellt werden

http://blog.corrlabs.com/2013/04/mysql-prepared-statement-needs-to-be-re.html http://bugs.mysql.com/bug.php?id=42041

Beide scheinen mir in Richtung table_definition_cache zu zeigen. Dies bedeutet jedoch, dass das Problem auf einen mysqldump-Vorgang auf dem Server zur gleichen Zeit zurückzuführen ist. Ich kann Ihnen versichern, dass dies nicht der Fall ist. Außerdem habe ich die Abfrage verschlankt, um nur jeweils ein Objekt einzufügen.

Dies ist der Code, der ausgeführt wird, wenn der Fehler ausgelöst wird. Was normalerweise in Form von.

SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared (SQL: insert into `organization_student` (`is_officer`, `organization_id`, `student_id`) values (0, 284, 26)) 

Welche wird dann von diesem Fehler wiederholt dreimal wiederholt.

SQLSTATE[HY000]: General error: 1615 Prepared statement needs to be re-prepared (SQL: insert into `organizations` (`orgsync_id`, `short_name`, `long_name`, `category`, `updated_at`, `created_at`) values (24291, SA, Society of American, Professional, 2014-09-15 16:26:01, 2014-09-15 16:26:01)) 

Wenn mir jemand in die richtige Richtung zeigen kann, wäre ich sehr dankbar. Ich bin mehr neugierig darauf, was den Fehler auslöst, und finde dann die Ursache für dieses spezielle Problem. Es scheint auch in der Laravel-Anwendung etwas üblich zu sein, wenn das ORM verwendet wird.

+0

ich die gleichen [Fehler] habe (http://stackoverflow.com/questions/31957441/laravel-general-error-1615-prepared-statement-needs-to-be-re-prepared/ 31957572) Verknüpfen, um Daten aus meiner MariaDB auszuwählen. Mir ist aufgefallen, dass es die Ausnahme nur bei der Arbeit mit SQL View gibt. Das einzig andere ist, dass der Fehler nur 2 Mal für mich angezeigt wird. Hast du etwas Neues entdeckt? Vielen Dank! – Tenaciousd93

Antwort

3

Dieser Fehler tritt auf, wenn mysqldump in Bearbeitung ist. Es spielt keine Rolle, welcher DB-Dump gerade läuft. Warten Sie, bis der Speicherauszug beendet ist und dieser Fehler verschwindet.

Das Problem besteht darin, dass die Tabellendefinition ausgegeben wird, die diesen Fehler verursacht.

Ja, ich versuchte, diese MySQL-Einstellungen zu ändern, aber es tritt noch einmal (vor allem, wenn schwer MySQL-Backups ausgeführt/dumps in der Nacht) ..

table_open_cache 128 => 16384

table_definition_cache 1024 => 16384

+2

Das habe ich gefunden, als ich mich umgesehen habe, aber wir lassen mysqldump erst um 2:00 Uhr laufen, und dieser Fehler würde zu jeder Zeit des Tages auftreten, an dem der Prozess ausgeführt würde. – mschuett

6

Während mysqldump die häufig gemeldete Ursache dafür ist, ist es nicht die einzige.

In meinem Fall running artisan: migrieren auf jede Datenbank wird auch diesen Fehler für verschiedene Datenbanken auf dem gleichen Server auslösen.

http://bugs.mysql.com/bug.php?id=42041 Erwähnt Tabellensperren/Flush, die in einem mysqldump aufgerufen werden würden, so dass es sich lohnt zu überprüfen, ob Sie Migrationen, Sperren oder Flushes gleichzeitig ausgeführt haben.

Scheitern, dass versuchen, die Vorbereitungen zu emulieren.

'options' => [ 
      \PDO::ATTR_EMULATE_PREPARES => true 
     ] 
Verwandte Themen