MySQL可以检查该文件是否存在?

我有一个表,其中包含HDD上实际文件的相对路径.例如:

SELECT * FROM images -->
id | path
1  | /files/1.jpg
2  | /files/2.jpg

我可以创建一个查询来选择指向不存在的文件的所有记录吗?我需要完全通过MySql服务器检查它,而不使用PHP客户端中的迭代.

最佳答案
我会使用这样的查询:

SELECT id,path,ISNULL(LOAD_FILE(path)) as not_exists
FROM images
HAVING not_exists = 1

函数LOAD_FILE尝试将文件作为字符串加载,并在失败时返回NULL.

请注意,在这种情况下失败的原因可能是mysql根本无法读取该特定位置,即使该文件确实存在.

编辑:

正如@ostrokach在评论中指出的那样,这不是标准的SQL,即使MySQL允许它,也可以遵循标准:

SELECT *
FROM images
WHERE LOAD_FILE(PATH) IS NULL

相关文章

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导...
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问...
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,...
case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...