Datenbank fetchrow_array fehlgeschlagen lange abgeschnitten DBI-Attribut

bin ich ziehen urls aus meiner Datenbank mit einem perl-Skript, wo ich beschäftigen fetchrow_array zu ziehen-URL aus der Datenbank, die funktionierte gut, bis ich traf eine sehr lange URL georgelog24.blog.iskreni.net/?bid=6744d9dcf85991ed2e4b8a258153a1ab&lid=ff9963b9a798ea335b75b5f7c0c295d1

dann ging es Los, um mir diesen Fehler.

DBD::ODBC::st fetchrow_array failed: st_fetch/SQLFetch (long truncated DBI attribute LongTruncOk not set and/or LongReadLen too small) (SQL-HY000) [state was HY000 now 01004]
[Microsoft][ODBC SQL Server Driver]String data, right truncation (SQL-01004) at C:\test\multihashtest2.pl line 44.

Ich glaube, das ist auf der Datenbank-Seite, wie der code, den ich verwendet haben, ziehen Sie die URL vorher funktioniert hat. Die Datenbank, die ich verwende, ist MSSQL-server 2005.

die URL-Spalte in der Datenbank verwendet text Art momentan, aber ich habe versucht es zu verändern varchar(max) und nvarchar(max) aber der Fehler steht immer noch.

Nach ein bisschen von Versuch und Irrtum habe ich herausgefunden, dass die maximale Länge der url, dann könnte ich die Abfrage erfolgreich mit fetchrow_array war 81 Zeichen. Und da können Sie URLs span lächerlich Längen manchmal, kann ich nicht von einer Beschränkung der URL-Länge.

Kann jemand mir helfen, zu verstehen, und schlage vor, eine Lösung für dieses?

FYI: Zeile 44 ist die erste Zeile in meinem code unten

while (($myid,$url) = $statement_handle->fetchrow_array()) { # executes as many threads as there are jobs to do 
    my $thread = threads->create(\&webcrawl); #initiate thread
    my $tid = $thread->tid;
    print "  - Thread $tid started\n";   #obtain thread no. and print
    push (@Threads, $thread);   #push thread into array for "housekeeping" later on
}

InformationsquelleAutor Marcus Lim | 2012-09-07

Schreibe einen Kommentar