羽毛動作、MySQL CI実施ホットスポット
8865 ワード
話題
既存のサービスおよびコントローラテストは、実際のdb環境と同じコンテナテストdbで実行されます.
羽動作ciで同じ環境をテストしたい
mysql 5.7からグループByセクションに含まれないColumn(集約されていないカラム)を選択すると、カラムの一部に表示されるべきエラーが発生します.
MySQL実行時のonly fullグループbyオプションを無効にすると、この問題を解決できます.
質問する
command
オプションを使用してcnf設定services:
db:
...
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-authentication-plugin=mysql_native_password
- --sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
試してみる。
...
- name: Set up MySQL
run: |
mysql --version
sudo echo -e "[mysqld]\nsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\nskip-grant-tables\n" | sudo tee /etc/mysql/my.cnf
sudo systemctl start mysql.service
mysql -e 'select @@sql_mode;' -uroot -proot
mysql -e 'CREATE DATABASE test;' -uroot -proot
mysql -e 'SHOW DATABASES;' -uroot -proot
...
羽状動作は容器環境においても同様である.cnf
ファイルを修正してサービスを実行しますが、次のエラーが発生しました.Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
試してみる。
https://github.com/actions/virtual-environments/issues/576
「再試行」を参照
- name: Set up MySQL
run: |
mysql --version
sudo echo -e "[mysqld]\nsql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION\nskip-grant-tables\n" | sudo tee /etc/mysql/my.cnf
sudo chown -R mysql:mysql /var/lib/mysql
sudo /lib/systemd/systemd-sysv-install enable mysql
sudo systemctl enable mysql.service
sudo systemctl start mysql.service
sudo systemctl status mysql.service
mysql -e 'select @@sql_mode;' -uroot -proot
mysql -e 'CREATE DATABASE test;' -uroot -proot
mysql -e 'SHOW DATABASES;' -uroot -proot
しかし시도 1
と同じエラーが発生しました解決する
解決する前に、
NO_AUTO_CREATE_USER
もsql modeに追加される.'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'
エラー発生mysql 8.0.11以降は
deprecated
であり、cnfファイルsql_mode
に明確な規定がある場合は、エラーが発生しないように手動で修正する必要があります.- name: Set up MySQL
run: |
mysql --version
sudo systemctl start mysql.service
mysql -e 'SET GLOBAL sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION";' -uroot -proot
mysql -e 'select @@sql_mode;' -uroot -proot
mysql -e 'CREATE DATABASE test;' -uroot -proot
mysql -e 'SHOW DATABASES;' -uroot -proot
ちょうど
本当に修正されたコードは数行しかないことに気づいたのは1日かかった.
インスタンスを構築する必要はありません.YAMLコードを使用するだけです.
ジェンキンスの代わりに使う資料はまだ多くないので、欠点のようです.
ホットスポット:https://github.com/volunteer-project-1/volunteer-server/issues/16
リファレンス
https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html
https://github.com/actions/virtual-environments/issues/576
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html
Reference
この問題について(羽毛動作、MySQL CI実施ホットスポット), 我々は、より多くの情報をここで見つけました
https://velog.io/@ehgks0000/깃-액션-MySQL-ci-구축-이슈
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
https://dev.mysql.com/doc/refman/8.0/en/sql-mode.html
https://github.com/actions/virtual-environments/issues/576
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html
Reference
この問題について(羽毛動作、MySQL CI実施ホットスポット), 我々は、より多くの情報をここで見つけました https://velog.io/@ehgks0000/깃-액션-MySQL-ci-구축-이슈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol