1. 通过mysql的shell命令进行测试,如果在shell中插入图片有问题,那么代码也就不能实现。
不能插入的原因:
1. 路径问题,在windows中用的‘/’
2.mysql默认的允许导入导出路径问题,secure-file-priv字段
3. 用户缺少FILE权限
针对secure-file-priv问题可以先通过shell中命令查看是否是mysql系统默认设置的路径,如果系统设置了路径则需要修改。我遇到的就是这个问题
通过root权限登入,然后执行 show global variables like '%secure%'; 操作查看
可以看到secure-file-priv 的允许路径是在 C:\ProgramData\MySQL\MySQL Server 8.0\Uploads 下。接下来可以通过修改my.ini 文件达到修改允许路径问题。
2. 修改my.ini文件
1. 退出mysql操作,然后执行关闭mysql服务命令 net start mysql80 注意命令结束不加“;”
2. 打开 C:\ProgramData\MySQL\MySQL Server 8.0 路径下的my.ini文件,找到secure-file-priv 将其修改为 secure-file-priv =
注意:修改前先备份,如果有问题还可以回退回去。
my.ini文件是ANSI格式,修改后注意查看是否格式改变,如果格式改变启动服务会出问题。这里建议使用notepad软件打开和修改,里面可以查看文件格式
3. 修改完成后通过root权限登入查看是否修改完成,同时插入一张图片检查下
3. 非root用户插入图片显示NULL
非root用户在mysql server部署机器通过load_file时出现 Column 'img' cannot be null
解决办法:为当前用户开通权限。给当前用户开通FILE Privilege权限时。
在root权限下,通过grant FILE on *.* to 'abcde'@'%'才能使FILE权限对所有db的所有tables生效,注意这里只能是对所有的数据库生效不能单独对某个数据库生效。
通过非root用户插入图片测试成功