2017-01-12 51 views
2

下面是我的程序,应该上传一个文本文件到我的数据库。我试图上传到数据库的文件大约是308MB。当我尝试运行这个程序时,它似乎完全运行,但是当我查看数据库时,我没有看到任何添加。所以我在$ db->东西中添加了它,以查看它会给出什么错误并确保它连接到数据库。PHP的mysql infile不工作

<?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>"; 

?> 

输出

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] => 
) 

消息错误

<!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

使用此LOAD DATA LOCAL INFILE而不是加载数据infile – JYoThI

+0

将此作为答案,因为这正是我所需要的。非常感谢你!!! – kodabear

+1

您的欢迎。我发布为答案 – JYoThI

回答

1

添加LOCAL到您的发言

使用此LOAD DATA LOCAL INFILE而不是load data infile

+0

嗯,它似乎填满了数据库的东西,但当我看着表,我没有看到它的任何东西,但它仍然占用空间 – kodabear

+1

您的领域终止|这是对的吗 ? – JYoThI

+0

它应该是。我想我会运行它与样本文件,看看会发生什么 – kodabear

0

您需要增加文件上传大小。默认文件上传大小为2MB 以下是这需要改变的变量:

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

利用这一点,你可以可以上传文件,200MB

的最大尺寸