2017-01-12 6 views
2

Unten ist mein Programm, das eine Textdatei in meine Datenbank hochladen sollte. Die Datei, die ich in die Datenbank hochladen möchte, ist ungefähr 308 MB groß. Wenn ich versuche, dieses Programm auszuführen, scheint es vollständig zu laufen, aber wenn ich in die Datenbank schaue, sehe ich nichts hinzugefügt. Also habe ich in den $ db-> Zeug hinzugefügt, um zu sehen, welche Fehler es geben wird und um sicherzustellen, dass es sich mit der Datenbank verbindet.PHP Mysql Infile funktioniert nicht

<?php 

set_time_limit(0); // unlimited max execution time 


$username = "root"; 
$auth = 'i-have-removed-it'; 
$db = $db = new mysqli("localhost", $username, $auth, 'testdb'); 
if(mysqli_connect_errno()) 
{ 
    die("Connection could not be established"); 
} 



print_r([ 
    "db->connect_errno1"  => $db->connect_errno, 
    "db->connect_error1"  => $db->connect_error, 
    "db->errno1"    => $db->errno, 
    "db->error1"    => $db->error, 
    "db->sqlstate1"   => $db->sqlstate, 
    "db->info1"    => $db->info, 
    "db->get_warnings1"  => $db->get_warnings(), 
]); 
$file = "./datafile_worldmap.txt"; 

$query = "load data infile '$file' 
into table `World_Map` 
character set ascii 
fields terminated by '|' 
lines terminated by '\r\n' 
ignore 1 lines 

(`GeoID`, `X`, `Y`, `Wood`, `Clay`, `Iron`, `Stone`, `Food`, `TerrainSpecificTypeID`, `TerrainCombatTypeID`, `RegionID`) 
"; 

$result = $db->query($query); 
print_r([ 
    "db->connect_errno2"  => $db->connect_errno, 
    "db->connect_error2"  => $db->connect_error, 
    "db->errno2"    => $db->errno, 
    "db->error2"    => $db->error, 
    "db->sqlstate2"   => $db->sqlstate, 
    "db->info2"    => $db->info, 
    "db->get_warnings2"  => $db->get_warnings(), 
]); 

$total_num_rows = $result->num_rows; 

echo "The Results Are : <br>"; 

?> 

Ausgabe

Array 
(
    [db->connect_errno1] => 0 
    [db->connect_error1] => 
    [db->errno1] => 0 
    [db->error1] => 
    [db->sqlstate1] => 00000 
    [db->info1] => 
    [db->get_warnings1] => 
) 
Array 
(
    [db->connect_errno2] => 0 
    [db->connect_error2] => 
    [db->errno2] => 1045 
    [db->error2] => Access denied for user 'User'@'%%%.%%%.%%%.%%%' (using password: YES) 
    [db->sqlstate2] => 28000 
    [db->info2] => 
    [db->get_warnings2] => 
) 

Nachrichten Fehler

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>500 Internal Server Error</title> 
</head><body> 
<h1>Internal Server Error</h1> 
<p>The server encountered an internal error or 
misconfiguration and was unable to complete 
your request.</p> 
<p>Please contact the server administrator, 
<<email>> and inform them of the time the error occurred, 
and anything you might have done that may have 
caused the error.</p> 
<p>More information about this error may be available 
in the server error log.</p> 
<p>Additionally, a 500 Internal Server Error 
error was encountered while trying to use an ErrorDocument to handle the request.</p> 
</body></html> 
+1

Verwenden Sie diese LOAD DATA LOCAL INFILE anstelle von Daten laden infile – JYoThI

+0

setzen Sie dies als Antwort, wie dies ist genau das, was ich brauche. VIELEN DANK!!! – kodabear

+1

Ihre Begrüßung. und ich postete als Antwort – JYoThI

Antwort

1

hinzufügen LOCAL zu Ihrer Aussage

Verwenden Sie diese LOAD DATA LOCAL INFILE anstelle load data infile

+0

hmm gut scheint es die Datenbank mit Sachen zu füllen, aber wenn ich in die Tabelle schaue, sehe ich nichts darin, aber es nimmt immer noch Platz – kodabear

+1

Ihre Felder durch | ist es richtig ? – JYoThI

+0

sollte es sein. Ich denke, ich werde es mit der Beispieldatei ausführen, um zu sehen, was passiert – kodabear

0

Sie benötigt werden, Datei-Upload-Größe zu erhöhen. Standard Datei-Upload-Größe ist 2MB Im Folgenden sind die Variablen, die sich ändern müssen:

memory_limit = 500M 
upload_max_filesize = 200M // 200MB file size 
post_max_size = 500M // increase your post limit to 500 MB 

diese verwenden Sie können in der Lage Datei mit der maximalen Größe von 200 MB hochladen