Score:0

อัปเกรดเป็น KeyCloak 18 ล้มเหลว

ธง mu

ฉันมี 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 ใช้งานได้ เบาะแสใด ๆ ?

djdomi avatar
za flag
ฉันไม่รู้ว่า keycloak คืออะไรหรือใช้สำหรับอะไร แต่แอปพลิเคชันส่วนใหญ่มีไฟล์การย้ายข้อมูลสำหรับฐานข้อมูล เพราะในกรณีส่วนใหญ่ ฐานข้อมูลเคยเป็นหรือจะถูกเปลี่ยนเป็นเวอร์ชันใหม่
Lucio Crusca avatar
mu flag
@djdomi เห็นด้วย แต่ฉันไม่เข้าใจสิ่งที่นำมาสู่ตาราง
djdomi avatar
za flag
ในหลายกรณี คุณต้องเรียกใช้คำสั่งหรือไฟล์พิเศษก่อน ซึ่งรายการที่ขาดหายไปจะถูกสร้างขึ้น
Lucio Crusca avatar
mu flag
ฉันเข้าใจแล้ว แต่ในกรณีนี้ คู่มือการอัปเกรดอย่างเป็นทางการที่ลิงก์ในคำถามของฉันไม่ได้ระบุให้เรียกใช้อะไรทำนองนั้น ในความเป็นจริง KC18 พยายามอัปเดตสคีมาฐานข้อมูลโดยอัตโนมัติในการเรียกใช้ครั้งแรก

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา