הקלות הבלתי נסבלת של השדרוג

שדרוג וורדפרס זה בדרך כלל עניין פשוט – מגבים את מסד הנתונים, מעלים את הגרסה החדשה ומקווים לטוב. ברוב המקרים זה עובד יפה ואין בעיות. אבל בשבילי זה לא היה מספיק: הוורדפרס של עתיד מזהיר הותקן לפני שנתיים אצל גו דדי, ואז תוכנת מסד הנתונים הנבחרת היתה MySQL 4.1, שזה כבר די ישן. כבר הרבה זמן שמסדי נתונים חדשים שאני מגדיר הם בגרסה 5.0, ובתור איש IT שמכבד את עצמו, הייתי חייב לעצמי שדרוג של מסד הנתונים.

בעיקרון, שדרוג כזה אמור להיות קל. מגדירים מסד נתונים חדש, מגבים את הישן, משחזרים את הנתונים לחדש, ואז מפנים את וורדפרס להשתמש במסד הנתונים החדש. קלי קלות. אבל בגלל הבדלי הגרסאות, ועוד כמה עניינים פנימיים, התחילו להופיע בעיות.

בעיה ראשונה: Encoding. ה-MySQL הישן הוגדר 8859, כלומר בייט אחד לכל אות, מהסט של לטינית/מערב אירופה. אבל וורדפרס שומר UTF-8 – פורמט מורכב בו לכל אות יש בין בייט אחד לארבעה (עבור עברית נשמרים שני בייטים לאות). זה עובד בצורה סבירה, עד שמנסים לגבות. כדי לתקן את הבעיה, MrM כתב דף php חביב שמגבה את הנתונים בצורה נכונה. ואז מגיעים לצד השני של המשוואה: ה-MySQL החדש מוגדר נכון, UTF-8. זה אומר שאם משחזרים עם הסקריפט של MrM, מקבלים זבל. כדי לפתור את זה הזנתי את הרשומות בכפית, דרך ממשק הניהול של השרת. זה היה יותר קל לולא אחד הוידג'טים מילא את טבלת options בעשרות אלפי רשומות זבל כפולות, משולשות, מרובעות וכו'.

צריך לומר ששחזור רשומות עם Encoding לא נכון גורם לכשל של חלקים מוורדפרס, לפעמים עד כדי חוסר יכולת להיכנס למערכת. לכן חשוב לשמור את הדטהבייס הישן זמין, כדי שאפשר יהיה לחזור אליו אם השדרוג לא מתקדם כמו שצריך.

בעיה שניה: FireStats. משום מה מבנה הטבלאות לא מגובה נכון, ובשעת השחזור חלק מהטבלאות לא נוצרות; ובגלל שיש כל כך הרבה טבלאות, התעצלתי לייצר אותן ידנית. אז התקנתי את FireStats מחדש, והטבלאות נוצרו בהתקנה. אבל בשעת שחזור המידע התגלה שמה שעבד עבור וורדפרס, לא עובד כאן – המחרוזות העבריות לא משוחזרות נכון. חוץ מזה ששמות הפוסטים לא מופיעים נכון (סימני שאלה במקום אותיות), זה מקלקל את הסטטיסטיקות לחלוטין: פתאום הדף הכי פופולרי בבלוג הוא דף שנמצא בטיוטה ולא פורסם מעולם. כדי לתקן את זה ביצעתי Export מהדטהבייס הישן דרך ממשק הניהול, והכנסתי את הרשומות לחדש. זה עבד חלקית – הסטטיסטיקה היתה נכונה, אך לא שמות הפוסטים. זה תוקן באמצעות אפשרות פנימית של FireStats, שבונה מחדש את השמות.

אחרי שהכל מוכן, כל מה שצריך זה לשנות את הקובץ wp-config.php שיצביע על מסד הנתונים החדש (אולי גם לעדכן שם משתמש וסיסמה, לפי הצורך). מומלץ בחום לשמור גיבוי של הקובץ הזה, כדי שאפשר יהיה לחזור אחורה במהירות.

לסיום, טיפ. די חששתי שמישהו ינסה להיכנס לבלוג בזמן שאני משחק עם מסד הנתונים, או אפילו ינסה להגיב (כלומר וורדפרס ינסה לכתוב רשומה חדשה). בשביל למנוע את זה, כתבתי דף HTML פשוט שאומר שהבלוג נמצא כרגע בשיפוצים. באמצעות קובץ htaccess הפכתי את הדף הזה לדף ברירת המחדל, וכך בעצם שיתקתי את וורדפרס, כי index.php הוא המפתח לכל הדפים במערכת.

בהצלחה למשדרגים באשר הם. אם יש משהו שלא עובד כמו שצריך, אשמח לקבל הודעה,תגובה או מייל.

7 תגובות בנושא “הקלות הבלתי נסבלת של השדרוג”

  1. אני חושב שגישה ל-RSS המשיכה לעבוד כרגיל. אבל לינקים ספציפיים מגיעים כולם לדף ברירת המחדל.
    אם, לעומת זאת, משנים את ה-URL ומכניסים פנימה index.php, אפשר להגיע לבלוג עצמו ולעקוף את דף ברירת המחדל.

  2. כתבתי על זה בזמנו כשעברתי את החוויה הזו בעצמי. בדיוק בשביל זה נוסף בעמוד ההגדרות של גירסאות וורדפרס החדשות סעיף wp_collation.
    המידע בתוך הטבלאות שמור ב utf8, אבל הטבלאות עצמן הן latin1. צריך להגדיר את הקידוד של ה DB כ latin1 אבל את ה collation כ utf8
    עובד כמו קסם.

  3. נושא נוסף שנתקלתי בו בשדרוג MYSQL הוא השינוי באלגוריתם של גיבוב הסיסמאות. בגרסאות 5 למיניהם משתמשים במילים ארוכות יותר וסכמות שלא הקצו מספיק מקום לססמה מגובבת נמצאות בבעיה. מעולם לא שדרגתי וורדפרס אז אני לא יודע אם זה משפיע או לא אבל שווה לבדוק את זה.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *