אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » מדריכים » לימוד MySQL » דיבאגינג של MySQL

דיבאגינג של MySQL

רן בר-זיק מרץ 2, 2010 7:33 am אין תגובות

הודעות אזהרה, הודעות שגיאה ו-low level errors ב-MySQL.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

במאמר הקודם למדנו על אופטימיזציה של MySQL: יצירת טבלאות זמניות ואופטימיזציה של שאילתות UPDATE ו-INSERT. במאמר הזה אנו נלמד על הודעות השגיאה והאזהרות של MySQL וכיצד לבדוק אותן ולפענח אותן.

באופן עקרוני, ב-MySQL יש לנו Warnings שמצביעות על בעיות לא מהותיות ו-ERRORS המצביעות על בעיות מהותיות של ממש שמונעות את השלמת הפקודה.

מבנה הודעת אזהרה (warnings)

המבנה של האזהרות הוא פשוט ביותר, לאחר השלמת השאילתה אני מקבל דיווח על מספר השורות שהתעדכן ועל מספר האזהרות (אם יש כאלו). למשל, אם אני אריץ את השאילתה הזו על טבלת integers שה-Data Type שלה הוא INT UNSIGNED NOT NULL:


INSERT INTO integers VALUES ('abc'), (-5), (NULL);

אני אקבל את התוצאה הזו:


Query OK, 3 rows affected, 3 warnings (0.00 sec)
Records: 3  Duplicates: 0  Warnings: 3

השאילתה עצמה תקינה, אך יש שלוש אזהרות. על מנת לראות את האזהרות האלו, אני צריך להריץ את הפקודה SHOW WARNINGS. אם אני אריץ אותה אני אראה את התקלות הבאות:


*************************** 1. row ***************************
  Level: Warning
   Code: 1264
Message: Out of range value adjusted for column 'i' at row 1
*************************** 2. row ***************************
  Level: Warning
   Code: 1264
Message: Out of range value adjusted for column 'i' at row 2
*************************** 3. row ***************************
  Level: Warning
   Code: 1263
Message: Column set to default value; NULL supplied to NOT NULL
         column 'i' at row 3
3 rows in set (0.00 sec)

התקלות האלו מראות לי בדיוק מה היתה הבעיה ומה היה הפתרון של MySQL. הפתרון הוא לתת לערכים את הערך הדיפולטיבי במקום את הערך שניסינו להכניס – אי אפשר להכניס -5 לשדה שהוגדר כ-UNSIGNED, אי אפשר להכניס NULL לשדה שהוגדר כ-NOT NULL ואי אפשר להכניס טקסט לשדה שהוגדר כ-INT.

מבנה הודעת ה-SHOW WARNINGS מחולק לכמה חלקים, החלק הראשון הוא תיאור טקסטואלי של האזהרה. החלק השני הוא מספר הקוד של MySQL לבעיה ואילו החלק הנוסף הוא רמת החומרה של הבעיה כאשר warning זו כאמור אזהרה, note זה לידיעה בלבד ו-error זו בעיה שמונעת את השלמת השאילתה.

SHOW WARNINGS מראה לנו גם את הבעיות. אם נריץ את השאילתה הזו:


  SELECT * FROM no_such_table;

נקבל את השגיאה הבאה:


ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist

SHOW WARNINGS יראה לנו את הטבלה הבאה:


+-------+------+------------------------------------------+
| Level | Code | Message                                  |
+-------+------+------------------------------------------+
| Error | 1146 | Table 'test.no_such_table' doesn't exist |
+-------+------+------------------------------------------+

מבנה הודעת השגיאה

אם נסתכל על הודעת השגיאה הזו:


ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist

נראה שהיא מורכבת מכמה חלקים – החלק הראשון הוא ERROR + מספר השגיאה ב-MySQL, החלק השני (בסוגריים) הוא מספר הקוד של ה-ODBC. והחלק השלישי הוא תיאור טקסטואלי של הבעיה.

אנו יכולים להשתמש ב-SHOW ERRORS על מנת לראות את כל השגיאות החמורות שיש לנו או להשתמש ב-SHOW WARNINGS ולראות גם את האזהרות.

תקלות low-level

חלק זה אינו רלוונטי למפתחים שמפתחים על wamp.

תקלות אלו מתקיימות כאשר יש בעיה במערכת שעליה ה-MySQL יושב. אולי הדיסק של המחשב מלא, או שיש בעיה עם הרשאות הקבצים (בלינוקס) או כל בעיה שקשורה ל-System. בעית low-level כזו מאופיינת בציון של Errcode בהודעת השגיאה. למשל:


ERROR 1 (HY000): Can't create/write to file './whatever.frm'
(Errcode: 13)

אפשר לראות שיש לנו Errcode ואפשר לראות שיש לנו מספר. אך אנו לא יודעים מדוע אי אפשר לכתוב לקובץ whatever.frm. בשביל זה יש לנו את תוכנת perror שבאה יחד עם ההפצה של MySQL. נכנס לקונסול החביב עלינו ונכתוב:


shell>  perror 13

ונקבל את הפלט הבא:


Error code  13:  Permission denied

כלומר הבעיה היא בגלל בעיית הרשאות. סביר להניח שמישהו שינה את הרשאות הקובץ ויש לתת ל-MySQL את היכולת לקרוא ולכתוב מהקובץ whatever.frm.

⚠️המדריכים כאן הם טעימה בלבד! יש ספר מקיף המלמד MySQL מרמת בסיס ועד רמה מתקדמת. הספר הדיגיטלי, שרלוונטי גם לכל מסדי הנתונים שעובדים עם SQL – זמין כאן כחלק מהפרויקט "ללמוד ג'אווהסקריפט בעברית" – זו הדרך הטובה ביותר ללמוד באופן מקיף MySQL.

במאמר הבא אנו נדון בהתקנה ובעבודה על MySQL בסביבה הביתית שלו – מערכת לינוקס.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
למדריך ה-MySQL הקודםאופטימיזציה בסיסית של MySQL – חלק ב'
למדריך ה-MySQL הבאMySQL על לינוקס
לתפריט המדריכים ל-MySQL
MySQL
ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

    הפרויקטים שאני כותב ושוחררו לציבור ברישיון קוד פתוח נמצאים ברובם בגיטהאב.
חיפוש

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד