Project

General

Profile

Migration Ubuntu 2004 MariaDB >1024 » History » Revision 6

Revision 5 (Carsten Rose, 05.08.2023 16:23) → Revision 6/9 (Carsten Rose, 05.08.2023 16:53)

h1. Migration auf Ubuntu 20.04 / MariaDB >10.2.4 

 h2. SQL_MODE: STRICT_TRANS_TABLE 

 Mit Ubuntu 20.04 kommt MariaDB 10.3 (Ubuntu 16.04: 10.0, Ubuntu 18.04: 10.1). 

 Es gibt einen neuen default "STRICT_TRANS_TABLE":https://mariadb.com/kb/en/sql-mode/#strict-modeS, der u.a.:  

 * Bei einem INSERT muessen alle Spalten, die nicht explizit angegeben sind, eine DEFAULT Definition haben. Existiert kein Default, kann der Record nicht erzeugt werden und es gibt eine Fehlermeldung. 

 h3. Workaround - alters Verhalten wieder herstellen 

 In der QFQ Extension kann definiert werden: 
 <pre> 
 # database.init  
 set names utf8; set @@SQL_MODE = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' 
 </pre> 

 Ausgabe `SELECT @@SQL_MODE` 

 

 h3. DB Schema anpassen - fuer alle Spalten einen Default setzen 

 <pre> 
 [root@db-server] 
 $ git clone https://github.com/crose-project/mysqlFixDefault.git /var/tmp/mysqlFixDefault 
 $ cd /var/tmp/mysqlFixDefault 
 $ chmod a+rx mysqlFixDefault.sh 

 # Do the SQL column update in place. 
 $ ./mySqlFixDefault.sh DB_NAME 
 </pre> 

 

 h2. Offen 

 Auf der GEO Lean Dashboard Seite gibt es eine Query die unter 16.04 funktioniert, nicht jedoch unter 20.04. Die folgende Reduzierung funktioniert auf beiden Versionen, das Problem ist damit leider nicht gezeigt 

 <pre> 
 # Test 1 
 SELECT * FROM (SELECT 1 as tr, 0 AS _pId UNION SELECT 2, 0 UNION SELECT 3,1) as fake WHERE _pId=0 

 # Test 2 
 SELECT * FROM (SELECT 1 as tr, 0 AS _pId FROM (SELECT '') AS a WHERE 0=1 UNION SELECT 2, 0 UNION SELECT 3,1) as fake WHERE _pId=0 
 </pre>