Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python MySql无法在同一目录中找到文件?_Python_Mysql_File - Fatal编程技术网

Python MySql无法在同一目录中找到文件?

Python MySql无法在同一目录中找到文件?,python,mysql,file,Python,Mysql,File,我正在尝试使用以下代码将图片加载到mysql数据库中: cursor, db = get_db() cursor.execute("UPDATE People SET photo = LOAD_FILE(\'myphoto.jpg\')") cursor.close() db.commit() db.close() 我已经能够将photo设置为其他值,方法是将LOAD_FILE短语替换为更简单的短语,因此我知道问题源于加载图片。同时,myphoto.jpg位于运行代码的目录中。MySql毫无怨

我正在尝试使用以下代码将图片加载到mysql数据库中:

cursor, db = get_db()
cursor.execute("UPDATE People SET photo = LOAD_FILE(\'myphoto.jpg\')")
cursor.close()
db.commit()
db.close()
我已经能够将photo设置为其他值,方法是将
LOAD_FILE
短语替换为更简单的短语,因此我知道问题源于加载图片。同时,myphoto.jpg位于运行代码的目录中。MySql毫无怨言地执行这些命令,但实际上并没有将图片放入数据库。可能出现什么问题?我如何解决


操作系统是linux。

检查文件是否加载到mysql中

select load_file('/currentdir/file.blob')
+-----------------------------+
| load_file('currentdir/file.blob') |
+-----------------------------+
| NULL                        |
+-----------------------------+
这可能是由于用户权限的原因

sudo chown mysql:mysql /currentdir/file.blob
我还读到,linux上有bug,这个问题可能会 由于
apparmor
,禁用它可能会解决问题,请执行以下操作: 这是ubuntu上的
/etc/init.d/apparmor stop

其他可能的原因

  • 检查路径

  • 检查特权

  • 函数是否返回NULL

  • 试试这个

  • mysql实例现在是否在您的计算机上


  • 而且在linux中,您不必放置反斜杠,
    LOAD\u文件(\'myphoto.jpg\)
    ,尝试不使用斜杠,
    LOAD\u文件('myphoto.jpg')

    检查文件是否加载到mysql中

    select load_file('/currentdir/file.blob')
    +-----------------------------+
    | load_file('currentdir/file.blob') |
    +-----------------------------+
    | NULL                        |
    +-----------------------------+
    
    这可能是由于用户权限的原因

    sudo chown mysql:mysql /currentdir/file.blob
    
    我还读到,linux上有bug,这个问题可能会 由于
    apparmor
    ,禁用它可能会解决问题,请执行以下操作: 这是ubuntu上的
    /etc/init.d/apparmor stop

    其他可能的原因

  • 检查路径

  • 检查特权

  • 函数是否返回NULL

  • 试试这个

  • mysql实例现在是否在您的计算机上


  • 而且在linux中,你也不必放置反斜杠,
    LOAD\u FILE(\'myphoto.jpg\)
    ,尝试不用它们,
    LOAD\u FILE('myphoto.jpg')

    操作系统?也许myphoto.jpg文件是旧图片。@RedCricket,你说它是旧图片是什么意思?也许是文件的内容,myphoto.jpg,是老照片,而不是新照片。尝试重命名文件,查看是否出现文件未找到错误。MySQL不知道代码从何处运行(它是一个通过api接收命令的服务器,代码可以从世界的另一端运行)<当发生任何类型的错误(例如,找不到、不可读等)时,code>load_file将返回
    null
    ,因此MySQL不抱怨这一事实并不意味着什么。添加路径!它必须在MySQL运行的同一台机器上(不管代码运行在哪个系统上)。如果您将ubuntu与apparmor一起使用,您还必须允许访问它。操作系统?可能myphoto.jpg文件是旧图片。@RedCricket,你说它是旧图片是什么意思?可能myphoto.jpg文件的内容是旧图片的内容,而不是新图片的内容。尝试重命名文件,查看是否出现文件未找到错误。MySQL不知道代码从何处运行(它是一个通过api接收命令的服务器,代码可以从世界的另一端运行)<当发生任何类型的错误(例如,找不到、不可读等)时,code>load_file将返回
    null
    ,因此MySQL不抱怨这一事实并不意味着什么。添加路径!它必须在MySQL运行的同一台机器上(不管代码运行在哪个系统上)。如果您将ubuntu与apparmor一起使用,您还必须允许访问它。