【问题标题】:Incomplete corrupt image upload blob phpmyadmin不完整的损坏图像上传 blob phpmyadmin
【发布时间】:2016-07-09 06:04:05
【问题描述】:

我目前正在学习 php 和 mysql。我正在关注一些不同的教程,并尝试将图像插入并稍后显示到我的 mysql 数据库中。 我不想在数据库中存储指向图像文件的链接

但是,尽管 phpmyadmin 和 sql 都没有抛出任何错误,但文件上传无法按预期工作。无论文件大小,它只上传大约 75% 的文件,因此会产生损坏的图片。

请参阅下面的屏幕截图以帮助说明问题。

在第一张图片上,您看到我选择了图像 IMG_1422,并在其旁边设置了允许的最大文件大小。

在下图中,您可以看到右侧的实际文件大小(1.8)和插入的文件大小(1.4)

我用来存储图像文件的数据类型是 long_blob 类型。

这里是mysql.conf中没有被注释掉的部分。

innodb_data_home_dir = "C:/xampp/mysql/data"
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = "C:/xampp/mysql/data"
#innodb_log_arch_dir = "C:/xampp/mysql/data"
## You can set .._buffer_pool_size up to 50 - 80 %
## of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 10M
## Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 128M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

## UTF 8 Settings
#init-connect=\'SET NAMES utf8\'
#collation_server=utf8_unicode_ci
#character_set_server=utf8
#skip-character-set-client-handshake
#character_sets-dir="C:/xampp/mysql/share/charsets"

[mysqldump]
quick
max_allowed_packet = 32M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[myisamchk]
key_buffer = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

【问题讨论】:

  • 如果您使用较小的文件,它是否可以正常工作,比如说大约 100-200KB 的文件?对于一些故障排除时间,我不太担心显示的文件大小,因为计算大小可能存在差异(1,000 与 1,024 字节数学,字节与位等),而是专注于文件;尝试通过 phpMyAdmin 查看它,会发生什么?尝试下载它,然后与原始版本进行比较。
  • 您好,感谢您的回复。没有文件大小没有区别。我还从网上下载了一些随机的 jpg,只是为了仔细检查我的图片是否损坏。如果我在 phpmyadmin 中查看该文件,它也会显示不正确。
  • 如果是资源限制或超时,我希望完成更小的文件,所以这有点令人费解。您使用的是什么 phpMyAdmin、MySQL 和 PHP 版本?什么网络服务器?网络服务器错误日志中有任何提示吗?
  • 我正在使用适用于 Windows 10 的 xampp。刚刚从网站下载了最新的软件包。 Apache 网络服务器、php 5.x 和 InnoDb 数据库。不,网络服务器的错误日志中没有任何内容......
  • 我很难找到他们网站上列出的 phpMyAdmin 版本号,但是在右侧的主页上应该相对容易找到它,它提供了很多服务器信息,朝向底部是标题“phpMyAdmin”,后面是“版本信息”(就在“文档”、“Wiki”等链接的上方)。

标签: mysql phpmyadmin blob


【解决方案1】:

好吧,这也不是我问题的明确答案,我找出了问题的一部分并意识到问题过于本地化,以至于可以回答并帮助其他人。

问题在于存储引擎 innodb。 在采用配置文件的过程中,避免出现以下错误:

The size of BLOB/TEXT data inserted in one transaction is greater than 10% of redo log size. Increase the redo log size using innodb_log_file_size. 

我一定是无意中破坏了我的 inno_db 数据库类型的配置文件。 如果我将数据库类型更改为 MyISAM,我所有的问题都将成为过去。

现在只是想知道这是否有任何其他后果?

【讨论】:

    【解决方案2】:

    如果您在 6 个月后没有好的答案... 我今天遇到了同样的问题,我只是在数据库(phpMyAdmin)中更改了 LONGBLOB 类型。

    希望我能帮助别人!

    【讨论】:

      猜你喜欢
      • 2020-01-09
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 2014-12-21
      相关资源
      最近更新 更多