Hi, ich hab mir ein PHP-Skript geschrieben, dass ein SQL-File einliest und dann die Insert-Statements in eine Oracle-Datenbank schreibt. Zum schreiben der Dateien verwende ich PDO mit Prepared Statements. Alle Strings und Blobs werden mit Hilfe der Funktion bindValue() zum PDO-Statement hinzugefügt. Das funktioniert alles ganz prima, so lange der String nicht länger als ca. 1300 Zeichen ist. Das kommt dann die Fehlermeldung:
Code:
General error: 1461 OCIStmtExecute: ORA-01461: Ein LONG-Wert kann nur zur Einfügung in eine LONG-Spalte gebunden werden (ext\pdo_oci\oci_statement.c:146)
Das PDO-Statement sieht ungefähr so aus:
Code:
INSERT INTO issue (id, parentid, projectid, usersid, statusid, statushistory, creationdate, visibility, bugchatisactive, bugid) VALUES(14485, NULL, 37, NULL, 315, ? , ? , ? , ? , 127)
Wenn ich einen von den Strings, die zu lange sind, auf unter 1300 Zeichen kürze, funktioniert es. Egal ob ich vorne oder hinten was wegschneide.
Das Datenbankfeld ist auch nicht zu klein. Das ist nämlich ein clob und dürft mit 1600 Zeichen kein Problem haben