בעיה עם MySQL

  • פותח הנושא aPrt
  • פורסם בתאריך

aPrt

New member
בעיה עם MySQL ../images/Emo35.gif

שלום, פיתחתי אפליקציית WEB ב JAVA על בסיס JSP ו SERVLETS שרצה על Apache Tomcat 5. עד היום עבדתי עם MySQL גירסה 3.23.54. התחברתי ל DB עם mysql-connector-java-3.1.12-bin.jar JDBC. כל המערכת כולל ה MySQL וה Apache Tomcat עובדים על לינוקס. הכל עובד מצויין ואין בעיה. אבל עכשיו אני צריך להשתמש בכמה פונקציות שאין ב MySQL שאני עובד איתו, אז הורדתי MySQL 5.0.27. הורדתי JDBC מתאים mysql-connector-java-5.0.5-bin.jar. הכל עובד בסדר חוץ מדבר אחד אני מקבל טעות שאני מנסה לעדכן או להזין מילה עברית דרך האפליקציה, אני מקבל את הטעות הזאת, "com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column ... " ה Connection String להתחברות ל BD היא, url="jdbc:mysql://localhost/db?useUnicode=true&characterEncoding=iso-8859-8" שיניתי את ה Connection String ל, url="jdbc:mysql://localhost/world?useUnicode=true&characterEncoding=iso-8859-8&jdbcCompliantTruncation=false" עכשיו אני לא מקבל שגיאה אבל העברית מוכנסת לDB כסימני שאלה הכל ככה ???. אני לא מבין מה הבעיה הרי לא הייתה לי כל בעיה ב MySQL הקודם, הייתה לי בעבר בעיה של סימני שאלה אבל סדרתי אותה על ידי ההוספה של ה "useUnicode=true&characterEncoding=iso-8859-8" ב Connection String. אז למה יש לי את הבעיה עכשיו, מישהו יודע ??? תודה מראש לכל המשיבים.
 

shanor

New member
מממ...

לפי התיאור שלך נשמע כאילו הטבלה שלך היא על charset של utf8 ואתה מנסה להזין ערכים בעברית.... 1. תבדוק מה הcharset של הטבלה ואם מוגדר אז גם מה ה-charset של העמודה אליה אתה מזין את הנתונים. 2. עם פתיחת הקישור למאגר הנתונים תריץ כשאילתה ראשונה
set names 'hebrew'​
ואז תנסה להזין נתונים. ואחר כך גם לשלוף אותם, כדי לבדוק שזה עובד... 3. אם זה לא עובד, תנסה להגדיר את 'set names 'utf8 ואז להזין את הנתונים ואז תנסה לשלוף את הנתונים כדי לבדוק האם זה עובד. אני לא מכיר את החיבורים מול java אבל אני מכיר את הסיפור הזה מתוך קליינטים שונים שמתחברים לmysql, בין אם זה סקריפט php ובין אם זה mysql-front או mysql-querybrowser מקווה שזה יעזור -=שנאור=-
 

aPrt

New member
hebrew_bin

ה charset של כל ה DB הוא hebrew_bin, נכון גם לגבי כל טבלה וכל שדה בה. בגרסה הקודמת של ה MySQL שהשתמשתי בה ה charset היה Latin1. בכל אופן ניסיתי את כל ה charset האפשריים על שדה מסויים בטבלה וכל פעם העידכון בעברית הפך ל "???". הדבר היחידי שפתר את הבעיה הוא שאני מטפל בסטרינג ב JAVA בצד השרת, אבל נראה לי לא הגיוני לעשות את זה בגלל שינוי גרסה של ה MySQL חייבת להיות דרך לטפל בזה ברמת ה DB. תודה בכל אופן.
 

shanor

New member
מממ...

אוקיי, בוא ננסה רגע משהו פשוט, עוד לפני שנוגעים בטבלאות עצמן. תריץ את השאילתות הבאות:
set names 'CHARSET'; select "משהו בעברית" as "משהו אחר בעברת";​
עכשיו תתחיל לשחק עם ה-charset החל מ-hebrew ועד utf8... המטרה: לאתר את הcharset שבו גם ה-select וגם הכותרת יצאו בעברית ניתנת לקריאה.
 

aPrt

New member
שניתי ב Connection String את ..

characterEncoding ל utf-8 במקום iso-8859-8 וזה הסתדר. תודה רבה לך בכל אופן.
 
למעלה