ฉันมี KeyCloak 17.0.1 ที่เห็นได้ชัดว่าทำงานได้โดยไม่มีปัญหาบนเซิร์ฟเวอร์ของฉัน กำหนดค่าให้ใช้ MariaDB ฉันพูดว่า "เห็นได้ชัด" เพราะ ณ วันนี้ มันยังไม่ได้อยู่ในโหมดการผลิต แม้ว่ามันจะเริ่มในโหมดการผลิต แต่มันอยู่ในเซิร์ฟเวอร์สำหรับการพัฒนา และจริงๆ แล้วมันมีไว้ให้เรานักพัฒนาได้เล่นกับมันเท่านั้น ฉันเริ่มต้นด้วยคำสั่งนี้:
bin/kc.sh -v start --hostname=my.real.hostname --https-certificate-file=/etc/letsencrypt/live/my.real.hostname/cert.pem --https-certificate-key-file =/etc/letsencrypt/live/my.real.hostname/privkey.pem --db-url-host localhost --db-ชื่อผู้ใช้ root --db-รหัสผ่าน my-real-password --proxy=reencrypt --db- สคีมา = KEYCLOAK
มันทำงานบนระบบ Debian 11 พร้อมเซิร์ฟเวอร์ MariaDB ที่บรรจุเดเบียน เพื่อให้มันทำงาน ฉันต้องย้ายข้อมูล MariaDB บนระบบไฟล์ ext4 ที่ไม่คำนึงถึงขนาดตัวพิมพ์และกำหนดค่า MariaDB ให้ละเว้นตัวพิมพ์เล็กและใหญ่ในชื่อตาราง (ดู โพสต์ของฉันที่นี่). ก่อนหน้านั้นก็บ่นกับ ไม่พบสคีมา "KEYCLOAK"
ข้อความผิดพลาด.
ตอนนี้ฉันกำลังพยายามอัปเกรด KC 17.0.1 เป็น KC 18 ต่อไปนี้ คู่มือนี้แต่เมื่อฉันเริ่ม KC 18 ฉันได้รับ ข้อความแสดงข้อผิดพลาดนี้ (สั้นๆ ไม่พบสคีมา "KEYCLOAK"
).
เนื่องจาก KC 17.0.1 ถูกบ่นด้วยข้อความแสดงข้อผิดพลาดเดียวกัน และปัญหาได้รับการแก้ไขแล้วโดยการย้าย MariaDB ไปบนระบบไฟล์ casefolding ext4 ฉันต้องการให้แน่ใจว่า MariaDB ยังคงเพิกเฉยต่อกรณีและปัญหา ดังนั้นฉันจึงลองดำเนินการด้วยตนเองจากคอนโซล MariaDB ซึ่งเป็นคำสั่ง SQL เดียวกันกับที่ทำให้เกิดข้อความแสดงข้อผิดพลาด KC:
MariaDB [(ไม่มี)]> สร้างตาราง KEYCLOAK.DATABASECHANGELOGLOCK (ID INT ไม่เป็นโมฆะ, บูลีนที่ถูกล็อกไม่เป็นโมฆะ, ประทับเวลา LOCKGRANTED, LOCKEDBY VARCHAR(255), CONSTRAINT PK_DATABASECHANGELOGLOCK คีย์หลัก (ID));
ซึ่งตอบกลับด้วยข้อความแสดงข้อผิดพลาดที่แตกต่างจากที่ KC รายงานในบันทึก:
ข้อผิดพลาด 1050 (42S01): ตาราง 'databasechangeloglock' มีอยู่แล้ว
ดังนั้น KC 18 ในระหว่างกระบวนการอัปเกรด จึงพยายามสร้างตารางที่มีอยู่แล้ว บางทีมันคิดว่ามันไม่มีเพราะมันหาไม่เจอ คีย์โคลค
สคีมาด้วยเหตุผลบางอย่างและพยายามสร้าง แต่แล้ว KC 18 เข้าใจได้อย่างไรว่าจำเป็นต้องอัปเกรดฐานข้อมูล หากไม่พบ ฉันไม่ได้ต้องการคำตอบสำหรับสิ่งนี้: ฉันพอใจกับวิธีแก้ปัญหา
เพื่อให้แน่ใจว่า MariaDB กำลัง casefolding ทั้ง schema และชื่อตารางจริง ๆ ต่อไปนี้คือสิ่งอื่น ๆ ที่ฉันได้ลอง:
# mysqladmin -u root -p ตัวแปร | grep lower_case_table_names
| lower_case_table_names | 2
#มายเอสคิวแอล
MariaDB [(ไม่มี)]> สร้างฐานข้อมูล TESTDB;
แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.000 วินาที)
MariaDB [(ไม่มี)]> วางฐานข้อมูล testdb;
ข้อความค้นหาตกลง 0 แถวได้รับผลกระทบ (0.001 วินาที)
MariaDB [(ไม่มี)]> วางฐานข้อมูล nonexistingschemaname;
ข้อผิดพลาด 1008 (HY000): ไม่สามารถวางฐานข้อมูล 'nonexistingschemaname'; ไม่มีฐานข้อมูล
MariaDB [(ไม่มี)]> สร้างฐานข้อมูล TESTDB;
แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.000 วินาที)
MariaDB [(ไม่มี)]> ใช้ testdb;
เปลี่ยนฐานข้อมูลแล้ว
ดังนั้น MariaDB ดูเหมือนว่าจะทำงานได้อย่างถูกต้อง (อย่างน้อยจากมุมมองของ casefold) แต่ KC 18 ก็ยังหยุดทำงานเมื่อเริ่มต้นในขณะที่ KC 17 ใช้งานได้ เบาะแสใด ๆ ?