עזרה בחיבור למסד נתונים בדוקר
-
@dovid עשיתי כדבריך, והנה השגיאה. הוא לא מכיר את החיבור הזה.
[ISQL]ERROR: Could not SQLConnect [IM002][unixODBC][Driver Manager]Data source name not found and no default driver specified
מנהל חבילות עוזר להתקין תכנות, אבל להגדרות תמיד צריך להעתיק קבצים.
אם אתה מתכוון לדרייבר שאני מעתיק, אין ממש חבילה מוכנה בשביל ALPINE עם הדרייבר הזה.@yossiz יש לך רעיון איך אני יכול לבדוק איך זה מתאים?
-
הפתרון הכי פשוט הוא להתשמש בהפצה שנותנת את הדרייבר של odbc עבור mariadb כחבילה ולא תצטרך להעתיק קבצים שלא מתאימים.
(אגב, יש ל-alpine חבילה כזו בערוץ ה-testing אבל גם שם נתקלתי באותה בעיה... אפשר לראות יותר פרטים על ידי הרצת הפקודהldd
מתוך מכונת הדוקר על קובץ ה-so ככה:ldd /usr/lib/libmaodbc.so
הפלט:
Error relocating /usr/lib/libmaodbc.so: compress: Symbol not found.
)
פתרון נוסף הוא לקמפל את הקובץ בעצמך מהמקור עם ההגדרות הנכונות. מאיפה השגת את הקובץ הזה? -
@yossiz לגבי ההצעה שלך, זה כמובן הפיתרון המושלם, אבל שים לב שאני צריך את הדרייבר על הקונטיינר הראשון, בו יש את האפליקציה שלי, לא על הקונטיינר שיש בו את השרת SQL. אז זה לא רלוונטי.
ובאמת עשיתי בדיוק את זה, וככה השגתי את הדרייבר והעתקתי אותו אצלי.אני רואה בקישור שהבאתי מסלאק שאומר שצריך לעשות לינק מחדש לדרייבר. אתה מבין מה זה אומר?
תודה על הטרחה!!
-
@שואף אמר בעזרה בחיבור למסד נתונים בדוקר:
אם אתה מתכוון לדרייבר שאני מעתיק, אין ממש חבילה מוכנה בשביל ALPINE עם הדרייבר הזה.
אז תדע לך סוד שאתה לא חייב להתבסס על alphin, אתה יכול להתבסס על אובונטו למשל.
כעת אנחנו יודעים שהבעיה היא odbc + mariadb ולא סתם odbc. ממה ש@yossiz ניסה אנחנו גם יודעים שהבעיה לא קשורה לדוקר דוקא אלא כללית להפצת alphin. אז קדימה, שנה את הdockerfile ותבסס על תמונה של מערכת שונה.
ואף פעם אתה לא אמור להעתיק קבצים שלא מכילים מידע אישי. בשביל זה יש מנהל חבילות (כן, גם להגדרות, ובפרט הגדרות תלויות חומרה וסביבה). מה שלא עובד עם חבילה מסודרת זה הרפתקאה שלא מתאימה לפשטות של דוקר. -
@שואף מחולק ודאי, בדוקר תעבוד כמו בדוקר.
אם זה עבד טוב כשזה ביחד ולא כשזה בחוץ זה אומר שהוא מתחבר אחרת כשהחיבור מרוחק או מקומי.
אם הייתי שם לב לפרט הזה הייתי שולל בעיה בכלל בodbc, וגם אין בעיה בmariadb.כשזה היה יחד, השתמשת גם בalias שמוגדר בקובץ כמו פה:
https://github.com/showf68/odbcExample/blob/master/files/odbc.ini
?
ואז במקום maindb היה localhost? -
@dovid אמר בעזרה בחיבור למסד נתונים בדוקר:
כשזה היה יחד, השתמשת גם בalias שמוגדר בקובץ כמו פה:
https://github.com/showf68/odbcExample/blob/master/files/odbc.ini
?
ואז במקום maindb היה localhost?נכון
-
לא חושב שהחסכון של כמה MB בגודל התמונה שווה את הכאב ראש שלך (במיוחד אם זה לקח כמה ימים)
מה שכן, אני גם מוצא את עצמי מפעם לפעם שורף שעות רבות על רווח מזערי, רק בגלל שזה נהפך לאתגר.. הרווח כבר לא מעניין, רק ההוכחה לעצמך שעמדת באתגר..
קשה לדעת לתפוס את הרגע הזה ופשוט לוותר. -
בסופו של דבר גם אני בעצמי לא עומד בפני האתגר
מצאתי את הבאג הזה פה
בהתאם לכך הצלחתי לבנות את התמונה, רק מקבל שגיאה:
/ # isql -v MySQL-main [S1000][unixODBC][ma-3.1.14]Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) [ISQL]ERROR: Could not SQLConnect
לפני השגיאה הייתה בטעינה של הדרייבר..
לשלוח PR?
-
@שואף אמר בעזרה בחיבור למסד נתונים בדוקר:
@aaron אמר בעזרה בחיבור למסד נתונים בדוקר:
לשלוח PR?
מה זה PR?
Pull Request
ואני מבין שמה שעשית זה לשלב את הקימפול של הדרייבר בתוך הDOCKERFILE, נכון?
נכון, קימפלתי בתוך תהליך הבניה. אבל כדי לא לנפח את גודל התמונה חייבים להשתמש בmulti stage builds.
מצורף הDockerfile
-
@aaron אמר בעזרה בחיבור למסד נתונים בדוקר:
מצורף הDockerfile
רק משהו קטן, זה החזיר לי שגיאה בשורה של העתקת הדרייבר מהBUILD הראשון כי השורה לא מסתיימת בסלאש. לך זה לא נותן שגיאה?
תכלס זה כנראה הדרייבר הנכון, אבל כמו שכתבת עכשיו יש בעייה חדשה... או שאולי זה סימן שזה לא הדרייבר הנכון.
תודה רבה על הטרחה -
@aaron אמר בעזרה בחיבור למסד נתונים בדוקר:
[S1000][unixODBC][ma-3.1.14]Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
שמתי לב למשהו מוזר, למה הוא אומר לוקל? הרי זה מרוחק, לא לוקלי. אולי זה הבעייה?
אגב ניסיתי גם להכניס לו שם משתמש וסיסמא לקובץ INI ולא עזר. -
@שואף אמר בעזרה בחיבור למסד נתונים בדוקר:
@aaron אמר בעזרה בחיבור למסד נתונים בדוקר:
מצורף הDockerfile
רק משהו קטן, זה החזיר לי שגיאה בשורה של העתקת הדרייבר מהBUILD הראשון כי השורה לא מסתיימת בסלאש. לך זה לא נותן שגיאה?
תכלס זה כנראה הדרייבר הנכון, אבל כמו שכתבת עכשיו יש בעייה חדשה... או שאולי זה סימן שזה לא הדרייבר הנכון.
תודה רבה על הטרחהאצלי לא נותן שגיאה..
@שואף אמר בעזרה בחיבור למסד נתונים בדוקר:
@aaron אמר בעזרה בחיבור למסד נתונים בדוקר:
[S1000][unixODBC][ma-3.1.14]Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
שמתי לב למשהו מוזר, למה הוא אומר לוקל? הרי זה מרוחק, לא לוקלי. אולי זה הבעייה?
אגב ניסיתי גם להכניס לו שם משתמש וסיסמא לקובץ INI ולא עזר.כמובן שהבעיה שהוא מנסה להתחבר ללוקאל, אבל שים לב שזה ההגדרות ששמת בINI..
ברגע שהגדרת Socket זה נותן עדיפות על פני שאר הערכים ולכן זה מתחבר ללוקאל.
מחקתי את השורה הזאת והכל עובד תקין.
(היה צריך גם להגדיר סיסמה ולהתחבר לdb הנכון)