【问题标题】:Possible reasons for failing MySQL insert query after video upload视频上传后 MySQL 插入查询失败的可能原因
【发布时间】:2015-11-12 22:50:39
【问题描述】:

我需要一些建议,以查找以下问题的可能原因。

我正在运行一个 PHP 脚本来上传视频。视频每次都成功上传到服务器。在我从临时文件夹到新文件夹执行move_uploaded_file 之后,我有以下代码:

$sql_insrt  = "INSERT INTO tbl_videos SET
               video_name       = 'name1',
               v_id             = '12'";
$rs_insrt   = $db -> Execute($sql_insrt);

现在对于小视频文件 (1~5MB),$rs_insrt 查询可以成功执行,没有任何问题。 但是,当我尝试上传更大的视频(例如 20MB)时,$rs_insrt 不会被执行。视频文件已上传到新文件夹中(应该如此),$sql_insrt 查询是正确的,但插入查询没有通过。

你们知道为什么会这样吗?

我在 php.ini 中有以下配置,所以我认为这不是问题:

max_execution_time = 300 
max_file_uploads = 20
max_input_nesting_level = 64 
max_input_time = -1
max_input_vars = 1000
memory_limit = 128M
post_max_size = 100M
upload_max_filesize = 100M

【问题讨论】:

  • 你会检查数据库错误吗?
  • 听起来您将其存储为 BLOB 并且可能已超出其长度。试试 LONGBLOB。这是在黑暗中的远景,因为我们不知道您如何存储它,也不知道数据库架构。
  • @Fred-ii- 说他正在存储一个文件
  • @Dagon 我的弹药用完了。我的远射似乎用完了。

标签: php mysql video pdo insert


【解决方案1】:

您可以尝试分块文件上传。我认为你有超时问题。 上传完成后,您就可以运行 mysql 语句了。

https://github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads

【讨论】:

    【解决方案2】:

    好的,所以我终于想通了。 MySQL 版本已升级,wait_timeout 已设置为 20 秒。因此出现错误。

    托管服务提供商允许的最大 wait_timeout 值为 90 秒 - 不足以满足我的需求,因此我找到了解决方法。

    我正在检查现有连接,如果没有,我将关闭然后打开一个新连接(下面的 ADOdb 示例):

    if (!mysql_ping($db)) {
       $db->Close();                        
       $db = ADONewConnection('mysqli');
       $db->Connect('host','user','pass','name') or die("Database not found!");
    }
    

    【讨论】:

      猜你喜欢
      • 2016-06-21
      • 2014-11-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多