php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 14.09.2011, 15:28  
nfo
Neuer Benutzer
 
Benutzerbild von nfo
 
Registriert seit: 05.04.2008
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
nfo befindet sich auf einem aufstrebenden Ast
nfo eine Nachricht über ICQ schicken nfo eine Nachricht über Skype™ schicken
Standard MS SQL (pdo) und Blob

Hi,

ich muss größere Datein in eine MS Sql datenbank ablegen,
leider stoße ich von einem zum nächsten Problem.

PHP->PDO->ODBC->FreeTDS->MS SQL

PHP hatte anfangs das Problem, das wenn ich
mit unpack arbeite out of memory bekomm hatte ...
(hab das mit memory_limit -1 mehr schlecht als recht gelöst, weswegen ich das jetzt über die pdo bind_param mache.. )

Danach hab ich immer ein out of memory bekommen
(wenn ich ein feld vom typ image im select hatte)
(https://bugs.php.net/bug.php?id=42765)

Desweitern hab ich folgene Parameter in der php.ini verändert:
Code:
; Valid range 0 - 2147483647.  Default = 4096.
mssql.textlimit = 2147483647

; Valid range 0 - 2147483647.  Default = 4096.
mssql.textsize = 2147483647

Zu guter letzt bekomm ich jetzt folgenden Fehler (wenn ich den typ auf varbin(max) stell):
[FreeTDS][SQL Server]String or binary data would be truncated.

Mein aktueller Code zum einspielen:
PHP-Code:
$db = new PDO('odbc:Archiv''xxx''xxx');

$stmt $db->prepare("insert into test_binary (test) values (?)");

if (!
$stmt) {
  
print_r($stmt->errno);
}

$fp fopen("alternativlos-17.mp3"'rb');

$stmt->bindParam(1$fpPDO::PARAM_LOB);

$db->beginTransaction();
$stmt->execute();
$db->commit();
print_r($stmt->errorInfo()); 
Bin schon etwas sehr frustriert und weiß nicht mehr weiter...
nfo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 14.09.2011, 15:37  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.856
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

commit + transaction begin aufs statement legen nicht auf die datenbank
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 14.09.2011, 15:49  
nfo
Neuer Benutzer
 
Benutzerbild von nfo
 
Registriert seit: 05.04.2008
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
nfo befindet sich auf einem aufstrebenden Ast
nfo eine Nachricht über ICQ schicken nfo eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von tr0y Beitrag anzeigen
commit + transaction begin aufs statement legen nicht auf die datenbank
das ändert leider auch nix an dem problem ..
nfo ist offline   Mit Zitat antworten
Alt 14.09.2011, 15:55  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

PHP-Code:

$fp 
fopen("alternativlos-17.mp3"'rb');

$stmt->bindParam(1$fpPDO::PARAM_LOB); 
da fehlt irgendwas .....

$fp ist jetzt auch nur ein sogenanntes Datei-Handle (File-Ressource oder wie du es nennen willst) du willst aber die echten Dateidaten da einfügen, dazu müsstest du die Datei erstmal einlesen .. und da knallt es dann wieder am Speicherverbrauch ... und was lernen wir daraus ? genau .. lass den Unsinn Binärdaten in die Datenbank zu schreiben, leg die Datei im Dateisystem an geeigneter Stelle ab und speicher in der Datenbank den Pfad+Dateinamen...
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 14.09.2011, 15:59  
nfo
Neuer Benutzer
 
Benutzerbild von nfo
 
Registriert seit: 05.04.2008
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
nfo befindet sich auf einem aufstrebenden Ast
nfo eine Nachricht über ICQ schicken nfo eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
und was lernen wir daraus ? genau .. lass den Unsinn Binärdaten in die Datenbank zu schreiben, leg die Datei im Dateisystem an geeigneter Stelle ab und speicher in der Datenbank den Pfad+Dateinamen...
Würde das ja gerne lassen, um genau zu sein habe ich allen davon abgeraten !!!
Leider ändert das nix, sie wollen das so haben und aus...

Und bzgl der file resource, in der php doku übergeben sie diese auch direkt an pdo->

http://php.net/manual/en/pdo.lobs.php

siehe Example #2 Inserting an image into a database
nfo ist offline   Mit Zitat antworten
Alt 14.09.2011, 16:08  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

ah .. ok .. Automatismus ...

hast du mal den letzten Kommentar angeschaut, ob du eventuell soetwas machst ? eventuell hilft dir auch der 4te Parameter weiter, in dem du die Dateigröße angibst
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 14.09.2011, 16:20  
nfo
Neuer Benutzer
 
Benutzerbild von nfo
 
Registriert seit: 05.04.2008
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
nfo befindet sich auf einem aufstrebenden Ast
nfo eine Nachricht über ICQ schicken nfo eine Nachricht über Skype™ schicken
Standard

hab mal die dateigröße angegebe:
Code:
Array
(
    [0] => 00000
    [1] => 0
    [2] =>  (SQLExecute[0] at /build/buildd/php5-5.3.5/ext/pdo_odbc/odbc_stmt.c:254)
    [3] => 00000
)
ohne filesize:
Code:
Array
(
    [0] => 22001
    [1] => 8152
    [2] => [FreeTDS][SQL Server]String or binary data would be truncated. (SQLExecute[8152] at /build/buildd/php5-5.3.5/ext/pdo_odbc/odbc_stmt.c:254)
    [3] => 22001
)
das character encoding hat damit wohl auch nix zu tun, habe es testweise mal mit und ohne probiert, ohne erkennbaren unterschied..
nfo ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Case führt nicht alle SQL Abfragen aus Angel PHP Einsteiger 2 05.09.2011 12:20
PDO: SQL CURRENT_TIMESTAMP vs. time() Griffith PHP Einsteiger 4 26.04.2011 08:23
[Erledigt] SQL WHERE ohne mehrere SQL Abfragen Soulstormer Datenbanken 10 01.03.2011 16:26
Problem mit PHP Variablen in SQL Befehl Noahndertaler Datenbanken 2 26.01.2011 17:14
[Erledigt] SQL Query funktioniert im phpmyadmin aber nicht mit PDO und PHP litterauspirna PHP Einsteiger 3 09.01.2011 10:50
Use The Index, Luke! - SQL Tuning Resource Markus Winand Datenbanken 0 04.12.2010 11:12
MySQL UTF-8 und PHP PDO webbies Datenbanken 3 01.12.2010 16:32
mit PDO Feldnamen, alle Feldeigenschaften auslesen litterauspirna PHP Tipps 2010 3 16.11.2010 17:20
SQL Datei mit PHP ausführen Kein Genie PHP Tipps 2010 2 09.11.2010 09:52
[Erledigt] Ein PDO allen Klassen zur Verfügung stellen matthiasl Datenbanken 2 27.10.2010 20:01
[Erledigt] MySql Transaktionen und PDO Leichti PHP-Fortgeschrittene 9 02.10.2010 21:41
BLOB auslesen beta02 PHP Tipps 2009 8 01.09.2009 20:51
[Erledigt] PDO: Allgmeine Fragen, Zeit messen christophM Datenbanken 2 19.05.2009 23:12
PDO oder PEAR::DB stefant42 PHP-Fortgeschrittene 2 29.08.2008 11:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
pdo blob, mssql blob, php mssql or pdo, blob mssql, sql server blob auslesen, php pdo sql über meherere datenbanken, php 5 mssql pdo, php pdo blob, php mssql binary limit, microsoft sql server data truncated, pdo mssql pdo::param_lob, php mssql 2008 parameter typ image, php bindparam pdo::param_lob length example, php mssql pdo, php pdo update blob, php pdo update pdo::param_lob, mssql string or binary data would be truncated, string or binary data would be truncated. ms sql, pdo php blob, update blob ändern feld mssql skript

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:19 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum