当前位置: 首页 > 面试题库 >

LOAD DATA LOCAL INFILE失败-从php到mysql(在Amazon rds上)

管翼
2023-03-14
问题内容

我们正在将数据库从位于Web服务器上的移动到单独的服务器(从Amazon EC2 Web服务器到RDS实例)。

由于数据库将位于与Web服务器不同的计算机上,因此在此之前需要有一个LOAD DATA INFILE才能正常工作。

在我的开发服务器上进行测试,结果证明它不起作用:

  • 我仍然可以像以前一样从php加载数据文件
  • 我可以从mysql命令行加载数据本地文件(使用–local_infile = 1)
  • 我无法从php加载数据本地文件。

在起作用的两件事之间,它排除了:

  • SQL或PHP代码的问题
  • 上传文件的问题,包括语法和文件权限
  • mysql服务器设置问题

我得到的错误是:错误1148(42000):此MySQL版本不允许使用命令(如果我不使用–local_infile =
1,我将从mysql命令行中获取该错误)

其他一些相关信息:

  • Ubuntu 12.04,MySQL 5.5.24,PHP 5.3.10
  • 我正在使用php的mysql_connect(而不是mysqli,因为我们正计划使用不支持mysqli的facebook的hiphop编译器。)
  • 因此,connect命令需要一个额外的标志集:

    mysql_connect($dbHost, $dbUser, $dbPass, false, 128);
    
  • 我已经用phpinfo()来确认 mysql.allow_local_infile = On

  • 我已经在Amazon RDS上尝试过它(以防万一这是我的开发服务器中的问题),并且在那儿也无法正常工作。(启用local_infile参数。)

我唯一没有尝试过的事情就是在我的开发服务器上编译mysql服务器,并打开允许本地infile的标志…但是即使我在我的开发服务器上正常工作,它也不会帮助我使用Amazon
RDS。(此外,LOAD DATA LOCAL INFILE确实可以从mysql命令行运行。)

似乎是php的mysql_connect()特有的问题

任何使用LOAD DATA LOCAL INFILE(也许来自Amazon RDS)的人都知道使它起作用的技巧吗?


问题答案:

我已经放弃了这一点,因为我认为这是php中的错误-
特别是mysql_connect代码,现已弃用。可以通过使用与@eggyal提到的错误报告中提到的步骤类似的步骤自行编译php,对源代码进行更改来解决该问题:https
://bugs.php.net/bug.php ? id
=
54158

相反,我将通过执行system()调用并使用mysql命令行来解决此问题:

$sql = "LOAD DATA LOCAL INFILE '$csvPathAndFile' INTO TABLE $tableName FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\\\"' ESCAPED BY '\\\\\\\\' LINES TERMINATED BY '\\\\r\\\\n';";
system("mysql -u $dbUser -h $dbHost --password=$dbPass --local_infile=1 -e \"$sql\" $dbName");

那对我有用。



 类似资料:
  • 我有以下php代码: 警告:mysqli_connect():(28000/1045):第2行/home/u536268762/public_html/index.html中的用户“u536268762_alex”srv19.main hosting.com(使用密码:YES)被拒绝访问MySQL:u536268762_alex@“srv19.main hosting.com”(使用密码:YES)

  • 有一些话题和我的相似,但对我没有帮助。也许会有新的事情发生。 问题:我无法执行wkhtmltopdf表单PHP。我的基本代码是:

  • 问题内容: 我已在Snow Leopard中成功安装了MySql x86_64,并且Ruby和Ruby Gems似乎已正确安装: 不幸的是,我在安装mysql gem时出错: 问题答案: 安装与Snow Leopard捆绑在一起的Xcode可以解决此问题。

  • 我正在尝试用utf-8语言保存文本(希伯来语-阿拉伯语-等等)但它失败了。。首先,它给了我(???)所以我把它放在数据源中。groovy dbCreate=“update”url=“jdbc:mysql://localhost/db_name?useUnicode=yes 它给了我一个错误 错误。JDBCException记者-非法混合排序规则(latin1_swedish_ci,IMPLICIT

  • 我正在使用JAVA JDBC驱动程序从MySQL获取数据。 异常...

  • 我是相当新的和。我使用的是Mac OS Sierra预装的Apache和PHP副本。我已经下载并配置了(工作完全正常,能够使用等等)。但是,我一直在努力从连接到数据库。我有这个代码: 我已将其保存为文件,但当我尝试从浏览器打开文件时,不断出现此错误: 警告:mysqli_connect():(HY000/2002):第6行 /Users/Mahfouz/Sites/connect_prac.php