הגדרת MySQL לשימוש בעברית
מאת: עובד בלאס, \n כתובת דוא"ל זו מוגנת מפני spambots, יש לאפשר JavaScript על-מנת לראות את הכתובתכתובת דואל זו מוגנת מדואר זבל, אתה צריך לאפשר Javascript בכדי לצפות בה
נטהוסט - שרותי אינטרנט
ינואר 2004
http://server3.nethost.co.il/mysql_hebrew/index.htm

כללי

הפופולריות של בסיס הנתונים MySQL הולכת וגדלה וכיום זהו בסיס הנתונים עם קצב הגידול בשימוש הגבוה ביותר. מנסיוננו MySQL מספק ביצועים מהירים יותר בשאילתות סטנדרטיות מתוכנות כמו MS SQL Server שעולות אלפי דולרים. MySQL היא תוכנה חופשית, התוכנה ומידע עליה זמינים וקלים לגישה. בשימוש בבסיס הנתונים MySQL בעברית יש שתי בעיות:

  • תוצאות אינן מגיעות ממוינות כהלכה בשימוש בשאילתות עם Order By או Group By
  • חיפוש לפי טקסט חופשי אינו מציג תוצאות נכונות בעברית

 

 

אנו נדון כאן בפעולות שיש לבצע בגרסא 4.0.17 של בסיס הנתונים, כדי לקבל תוצאות טובות בעברית. גרסאות מתקדמות יותר של בסיס הנתונים כמו 4.1.1 או 5 תומכות טוב יותר בשפות, אך נכון לזמן כתיבת שורות אלה נמצאות, בשלבי ניסוי ואינן מתאימות לאפליקציות בשימוש יומיומי (Production).

עידכון הגדרות התוכנה לעבודה עם עברית

הפעולות שיש לבצע כדי לעבוד עם עברית ב MySQL:

הערה: בדוגמאות להלן אנו מניחים ששרת ה MySQL מותקן על מחשב המריץ Windows, הפעולות שיש לבצע במערכות הפעלה אחרות דומות.

  • יש לבדוק האם גרסת ה MySQL שבה משתמשים תומכת בעברית, אופן הבדיקה מתואר כאן. הגרסא הסטנדרטית תומכת בעברית, לכן אם מותקנת גרסא 4 ואילך במחשבכם אפשר לעבור לפעולה הבאה.
  • להוסיף לקובץ האיתחול של השרת, c:\winnt\my.ini (מיקום הקובץ יכול להיות שונה בהתקנה שלכם) את השורה:

default-character-set=hebrew

  • לכבות את MySQL:

c:\mysql\bin\mysqladmin shutdown

  • לעדכן את האינדקסים של כל הטבלאות בכל בסיסי הנתונים לפעולה עם עברית. את העידכון מבצעים באמצעות הפקודה myisamchk. פקודה זו פועלת ישירות על קבצי הנתונים, לכן כיבינו בשלב הקודם את MySQL, במקרה ששתי התוכנות, mysqld - שרת MySQL ו myisamchk כותבות בעת ובעונה אחת לבסיס נתונים, עלולות טבלאות בבסיס הנתונים להיפגם (Corrupt). את פקודת העידכון מבצעים בתוך המחיצה בה נמצאים הקבצים של בסיס הנתונים אותו מעוניינים לעדכן, לדוגמא מתוך: c:\mysq\data\mydatabase. הפקודה שיש להריץ:

c:\mysql\bin\myisamchk -r -q --set-character-set=hebrew *.myi

  • כאמור, יש לבצע את פקודת ה myisamchk עבור כל בסיס נתונים בהתקנה.

  • מתחילים את MySQL ומוודאים שהכל פועל כשורה.

 

 

 

אופן הבדיקה האם ההתקנה תומכת בעברית

ההתקנה הסטנדרטית של MySQL תומכת בעברית. כדי לבדוק האם ההתקנה במחשב שלכם תומכת בעברית, בידקו את תוכן המשתנים:

  • character_set - באיזה Character Set רץ שרת ה MySQL כרגע.

  • character_sets - רשימת ה Character Sets בהם תומך שרת ה MySQL, המילה hebrew מסמנת שההתקנה תומכת בעברית.

בדיקת ערכי המשתנים הנ"ל:

בדוגמאות בהמשך אנו מניחים שהפעלתם את ה Command Line Client של MySQL.

דוגמא להפעלת ה Command Line Client:

C:\mysql\bin>mysql -h localhost -u root -p
Enter password: ********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 4.0.16-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

הגרסא הסטנדרטית של MySQL מגיעה עם תמיכה ב Charachter-Set העברי. תמיכה זו מיושמת גם באמצעות קבצים חיצוניים הנמצאים בספרייה share/charset.

כדי לבדוק האם התקנה תומכת ב charachter-set העברי (וכאמור התקנת ברירת המחדל תומכת בעברית), ומהו charachter-set ברירת המחדל של ההתקנה, בודקים את תוכן המשתנים: character_set ו charachter_sets. אפשר לבדוק את ערכי המשתנים האלה באמצעות פקודת mysql או באמצעות תוכנה גרפית לניהול בסיס הנתונים כמו MySQLCC.

בדיקת תוכן משתני ה character-set באמצעות פקודת mysql:

mysql> show variables like 'char%';
+----------------+--------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------------------------------------------------------+
| Variable_name | Value

|
+----------------+--------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------------------------------------------------------+
| character_set | latin1

|
| character_sets | latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 uji
s dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 est
onia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5 |
+----------------+--------------------------------------------------------------
--------------------------------------------------------------------------------
---------------------------------------------------------------------+

המשתנה character_set מכיל את ה Default Charachter Set, שיכול להיקבע עם הפעלת השרת. המשתנה charachter_sets מכיל את כל ה charachter sets האפשריים בהתקנה זו של MySQL. ניתן לראות בדוגמא למעלה ש character_sets מכיל את השם hebrew, ולכן אפשר להשתמש ב Charachter Set העברי.

אפשר גם לראות את תוכן המשתנים באמצעות התחברות לשרת ה MySQL עם תוכנת הניהול הגרפית: MySQLCC.

דוגמא לצפיה במשתנים של השרת באמצעות MySQLCC. במקרה זה השרת פועל ב charachter set העברי:

הגדרת MySQL לשימוש בעברית