mysql Travis构建失败,错误为LOAD DATA LOCAL INFILE文件请求由于访问限制而被拒绝

z4bn682m  于 2023-05-05  发布在  Mysql
关注(0)|答案(1)|浏览(183)

UPD:问题与MySQL: Enable LOAD DATA LOCAL INFILE不同
这个问题与LOCAL run有关,与travis build无关,在本地,使用该选项,一切都像一个魅力,没有问题,但在travis中运行,也请求mysql而不是mysql客户端,但programmaticaly -所以我不能设置任何客户端选项,这使我的情况有所不同。
我正在尝试设置travis build -并遇到错误

MySQLdb.OperationalError: (2068, 'LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.')

我尝试了local_infile选项,就像我在本地系统上所做的那样:

mysql -u root -h localhost -e 'SET GLOBAL local_infile=1'

(我在安装前部分和安装部分尝试了此选项)
但还是无济于事。
我完全不知道该往哪里走。感谢任何帮助。
我的travis配置如下:

language: python
os: linux
dist: jammy

services:
  - mysql

python:
  - "3.10.5"

env:
  - TESTENV=test

before_install:
  - mysql -u root -h localhost -e 'GRANT ALL PRIVILEGES ON *.* TO "travis"@"%"'
install:
  - pip3 install --upgrade pip
  - pip3 install --upgrade setuptools wheel
  - mysql -u root -h localhost -e 'SET GLOBAL local_infile=1'
  - pip3 install -r requirements.txt
  - if [[ "$TESTENV" != "docs" ]]; then pip3 install -r requirements-test.txt; fi
  - pip3 install -e .

script:
  - if [[ "$TESTENV" == "test" ]]; then coverage run -m pytest --server=mysql://travis@127.0.0.1:3306/ src/tests; fi
  - if [[ "$TESTENV" == "test" ]]; then coverage report -m; fi
sqserrrh

sqserrrh1#

MySQL DSN可能接受local_infile=1作为参数。示例:

coverage run -m pytest --server=mysql://travis@127.0.0.1:3306/?local_infile=1 src/tests

我无法确认这一点,因为我安装的coveragepytest版本无法识别--server选项。我找不到任何关于那面旗帜的文件。所以我不知道你用的是什么。
另外,对local_infile选项的支持可能取决于您使用的数据库驱动程序,例如。mysql.connector,pymysql等

相关问题