CI: Working to get MySQL server collaborate with CI env

This commit is contained in:
Griatch 2025-12-19 10:36:00 +01:00
parent 0f0088cd9b
commit bf138d8a6f
4 changed files with 40 additions and 6 deletions

View file

@ -64,7 +64,41 @@ runs:
evennia --init testing_mygame
cp .github/workflows/${{ inputs.testing-db }}_settings.py testing_mygame/server/conf/settings.py
cd testing_mygame
# For MySQL, ensure default row format is set before migrations
if [ "${{ inputs.testing-db }}" == "mysql" ]; then
python -c "
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.conf.settings')
django.setup()
from django.db import connection
with connection.cursor() as cursor:
cursor.execute('SET GLOBAL innodb_default_row_format = \"DYNAMIC\"')
cursor.execute('SELECT @@innodb_default_row_format')
result = cursor.fetchone()
print(f'MySQL default row format: {result[0]}')
"
fi
evennia migrate
# For MySQL, ensure all existing tables use DYNAMIC row format
if [ "${{ inputs.testing-db }}" == "mysql" ]; then
python -c "
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.conf.settings')
django.setup()
from django.db import connection
with connection.cursor() as cursor:
cursor.execute(\"SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = DATABASE() AND ENGINE = 'InnoDB'\")
tables = [row[0] for row in cursor.fetchall()]
for table in tables:
try:
cursor.execute(f'ALTER TABLE \`{table}\` ROW_FORMAT=DYNAMIC')
print(f'Set ROW_FORMAT=DYNAMIC for table {table}')
except Exception as e:
print(f'Warning: Could not set ROW_FORMAT for {table}: {e}')
"
fi
evennia collectstatic --noinput
shell: bash

View file

@ -64,13 +64,13 @@ runs:
GRANT PROCESS ON *.* TO 'evennia'@'%';
FLUSH PRIVILEGES;
EOF
# Set database character set and default row format
# Set database character set
mysql -u root -proot_password -h 127.0.0.1 evennia <<EOF
ALTER DATABASE evennia CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
EOF
# Set default row format for new tables (needed for long keys with utf8mb4)
# Verify settings are correct
mysql -u root -proot_password -h 127.0.0.1 evennia <<EOF
SET GLOBAL default_storage_engine = 'InnoDB';
SELECT @@innodb_default_row_format, @@character_set_server, @@collation_server;
EOF
shell: bash

View file

@ -109,7 +109,7 @@ jobs:
services:
postgres:
image: postgres:13
image: postgres:14
env:
POSTGRES_DB: evennia
POSTGRES_USER: evennia

View file

@ -48,13 +48,13 @@ DATABASES = {
"PORT": "", # use default port
"OPTIONS": {
"charset": "utf8mb4",
"init_command": "SET collation_connection=utf8mb4_unicode_ci, sql_mode='STRICT_TRANS_TABLES'",
"init_command": "SET collation_connection=utf8mb4_unicode_ci, sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1",
},
"TEST": {
"NAME": "evennia",
"OPTIONS": {
"charset": "utf8mb4",
"init_command": "SET collation_connection=utf8mb4_unicode_ci, sql_mode='STRICT_TRANS_TABLES'",
"init_command": "SET collation_connection=utf8mb4_unicode_ci, sql_mode='STRICT_TRANS_TABLES', innodb_strict_mode=1",
},
},
}