使用Travis CI配置Mysql 5.7

8

我无法在Travis CI上运行我的测试,因为我找不到在容器中设置mysql 5.7的方法。

我发现这个gist https://gist.github.com/BenMorel/d981f25ead0926a0cb6d 解释了一种travis.yml的配置方法。以下是命令:

sudo apt-get remove --purge "^mysql.*"
sudo apt-get autoremove
sudo apt-get autoclean
sudo rm -rf /var/lib/mysql
sudo rm -rf /var/log/mysql
echo mysql-apt-config mysql-apt-config/enable-repo select mysql-5.7-dmr | sudo debconf-set-selections
wget http://dev.mysql.com/get/mysql-apt-config_0.2.1-1ubuntu12.04_all.deb
sudo dpkg --install mysql-apt-config_0.2.1-1ubuntu12.04_all.deb
sudo apt-get update -q
sudo apt-get install -q -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" mysql-server

紧接着,我正在进行:
$ mysql -uroot < tests/ApiBundle/Datas/dump_test.sql
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

为什么?我尝试了很多方法...而且在这个问题上Google绝对不是我的朋友...


你尝试过使用 sudo mysql -uroot < tests/ApiBundle/Datas/dump_test.sql 命令吗? - набиячлэвэли
是的,我做了...还是同样的错误! - Philippe CARLE
你是否尝试过使用Docker?请查看此链接:https://medium.com/@mtparet/install-mysql-server-5-7-on-travis-96f2ebc0f339 - ghashi
自从我发布这篇文章以来,当然我已经这样做了:每次我遇到与CI/开发/测试运行相同类型的问题时,我仍然会这样做。现在每个人都应该这样做。但是,我认为我不应该更新这个问题或答案,因为它们仍然可能对任何试图在容器外执行此操作的人有用。 - Philippe CARLE
2个回答

8

好的,我已经找到了如何在Travis CI默认容器中重新安装MySQL 5.6的方法。

以下是.travis.yml文件所需的内容:

services:
  - mysql
sudo: true
before_script:
  - bash .travis.install-mysql-5.7.sh

这里是.travis.install-mysql-5.7.sh脚本(感谢@codyzu的答案进行了编辑):

echo mysql-apt-config mysql-apt-config/select-server select mysql-5.7 | sudo debconf-set-selections
wget https://dev.mysql.com/get/mysql-apt-config_0.7.3-1_all.deb
sudo dpkg --install mysql-apt-config_0.7.3-1_all.deb
sudo apt-get update -q
sudo apt-get install -q -y --allow-unauthenticated -o Dpkg::Options::=--force-confnew mysql-server
sudo mysql_upgrade

我希望这篇文章能够帮助到遇到同样问题的人!

在系统使用MySQL用户(或类似用户)的情况下,需要在.travis.install-mysql-5.7.sh的最后一步调用sudo mysql_upgrade - Ilija
这对我不起作用,我遇到了依赖问题:mysql-server 依赖于 mysql-community-server (= 5.7.8-rc-1ubuntu12.04); 然而: 包 mysql-community-server 尚未配置。 - Feek
我不得不加上这个才能让它对我正常工作:sudo mysql_upgrade -u root sudo service mysql restart - Will Bowman
1
这个程序出问题了,因为mysql-5.7-dmr已经不存在了。这是我的(现在)可用脚本 - codyzu
我更新了你的答案,因为它由于“WARNING: The following packages cannot be authenticated!”而失败,所以必须传递“--allow-unauthenticated”才能安装。 - Jeff Puckett

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接