加载数据本地内嵌mysql服务器php Ubuntu
我之所以发布这个决议,是因为它让我疯狂了好几天——结果是AppArmor设置。这个问题终于解决了: 我看到这是标记为重复,但所有其他建议似乎指向编辑my.cnf,这对我不起作用 我无法使加载数据本地填充工作。我的MySQL服务器版本是5.5.41,我的Ubuntu版本是14.04.2。mymy.cnf在mysql、mysqld和client下都有“localinfle”。下面我将在Stackoverflow上的每一篇文章的连接字符串中指定标志128。当我在客户机上运行下面的代码时,它工作得非常好,但现在它位于服务器上,它不断抛出 “此MySQL版本不允许使用此命令 编辑,从命令行运行此命令成功:加载数据本地内嵌mysql服务器php Ubuntu,php,mysql,ubuntu,load-data-infile,Php,Mysql,Ubuntu,Load Data Infile,我之所以发布这个决议,是因为它让我疯狂了好几天——结果是AppArmor设置。这个问题终于解决了: 我看到这是标记为重复,但所有其他建议似乎指向编辑my.cnf,这对我不起作用 我无法使加载数据本地填充工作。我的MySQL服务器版本是5.5.41,我的Ubuntu版本是14.04.2。mymy.cnf在mysql、mysqld和client下都有“localinfle”。下面我将在Stackoverflow上的每一篇文章的连接字符串中指定标志128。当我在客户机上运行下面的代码时,它工作得非常
mysql> LOAD DATA LOCAL INFILE '/home/aa/ER.csv'
-> INTO TABLE ER_import
-> FIELDS TERMINATED BY ','
-> LINES TERMINATED BY '\r\n'
-> IGNORE 1 LINES
-> (Paid_Amount,
-> Pro_Number,
-> Invoice,
-> Ship_Date,
-> BL,
-> Carrier_Name,
-> Check_Number,
-> Paid_Date,
-> Shipper_City,
-> Shipper_State,
-> Shipper_Name_1,
-> Recipient_City,
-> Recipient_State,
-> Recipient_Name_1,
-> Batch_Number,
-> Actual_Weight,
-> Billed_Amount
-> );
Query OK, 8585 rows affected, 4 warnings (0.21 sec)
Records: 8585 Deleted: 0 Skipped: 0 Warnings: 4
但是,这会不断重新调整未找到的文件:“文件'/home/aa/ER.csv'未找到(错误代码:13)”文件确实存在并且权限正确:
$delete = "DELETE FROM ER_import";
if (!mysqli_query($conn,$delete))
{
echo("Error description: " . mysqli_error($conn));
}
$query = <<<eof
LOAD DATA INFILE '/home/aa/ER.csv'
INTO TABLE ER_import
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(Paid_Amount,
Pro_Number,
Invoice,
Ship_Date,
BL,
Carrier_Name,
Check_Number,
Paid_Date,
Shipper_City,
Shipper_State,
Shipper_Name_1,
Recipient_City,
Recipient_State,
Recipient_Name_1,
Batch_Number,
Actual_Weight,
Billed_Amount
);
eof;
if($results = mysqli_query($conn, $query)){
echo $file. " has been imported!";
} else die(mysqli_error($conn));
$delete=“从ER_导入中删除”;
如果(!mysqli_查询($conn,$delete))
{
echo(“错误描述:.mysqli_错误($conn));
}
$query=试试这个方法
$query = <<<eof
LOAD DATA LOCAL INFILE DIR_FILE
INTO TABLE ER_import
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
eof;
$query = str_replace('DIR_FILE',$dir.$file,$query);
$query=在LOAD DATA LOCAL INFILE
中,对LOCAL
的含义有一个非直观的扭曲。当您加载的文件不是服务器本地文件时,您只需要使用LOCAL
。LOCAL
告诉MySQL客户端拾取一个本地文件并将其放置在服务器上的临时目录中
在服务器上运行php脚本时,请尝试从命令中删除单词LOCAL
。几年前我也遇到过同样的问题
客户端和服务器都需要启用本地加密
我建议您在尝试使用PHP之前,首先尝试从命令行界面运行LOAD DATA LOCAL infle
。要确保来自客户端的连接启用LOCAL infle,请运行以下命令:
mysql--local infle=1-h REPLACE\u HOST\u IP-u username-p
祝你好运!另请参阅。有趣的是,我遇到了这样的错误:主机“hostname”不允许连接到此MySQL服务器。好吧,让我们先解决这个问题。我们需要确保服务器接受远程MySQL连接。为此,请相应地修改my.cnf文件。还可以授予访问用户用户名
的权限,以便进行远程连接:将*.*上的所有权限授予“用户”@“%”
我已经过了这个关——你在我的编辑中看到了任何明显的东西吗?