Πώς να εγκαταστήσετε και να ρυθμίσετε το HIVE Metastore με την MYSQL

⚡ Έξυπνη Σύνοψη

Το metastore Hive αποθηκεύει κάθε ορισμό πίνακα, όνομα στήλης και τύπο δεδομένων πίσω από το Apache Hive και μετακινεί αυτό το αποθετήριο από την προεπιλεγμένη βάση δεδομένων Derby σε MySQL είναι αυτό που επιτρέπει σε πολλούς χρήστες να συνδέονται ταυτόχρονα.

  • 🗄️ Τι περιέχει: Το metastore διατηρεί τα μεταδεδομένα σχήματος σε σχεσιακούς πίνακες, ενώ τα ίδια τα δεδομένα του πίνακα παραμένουν στο HDFS.
  • 🚫 Γιατί αποτυγχάνει η Ντέρμπι: Το πακέτο metastore Derby δέχεται μία ενεργή συνεδρία, γεγονός που το αποκλείει από οποιοδήποτε κοινόχρηστο ή παραγωγικό σύμπλεγμα.
  • 🔧 Τέσσερα ακίνητα: σύνδεσηURL, ConnectionDriverName, ConnectionUserName και ConnectionPassword στο hive-site.xml point Hive στο MySQL.
  • 🔗 Τοποθέτηση οδηγού: The MySQL Η σύνδεση JDBC πρέπει να συνδεθεί στον κατάλογο lib του Hive πριν από την επιτυχή ολοκλήρωση οποιασδήποτε προσπάθειας σύνδεσης.
  • 🧱 Σχήμα πρώτο: Το βοηθητικό πρόγραμμα schematool δημιουργεί τους πίνακες metastore και το Hive αρνείται να ξεκινήσει σε ένα μη αρχικοποιημένο σχήμα.
  • 🔎 Επαλήθευση σε MySQL: Ένας πίνακας που δημιουργείται στο Hive εμφανίζεται αμέσως ως γραμμή στον πίνακα TBLS της βάσης δεδομένων metastore.

Πώς να εγκαταστήσετε και να ρυθμίσετε το metastore Hive με MySQL

Τι είναι το HIVE Metastore;

Το Hive metastore είναι ένα αποθετήριο που αποθηκεύει μεταδεδομένα (ονόματα στηλών, τύπους δεδομένων, σχόλια κ.λπ.) που σχετίζονται με Κυψέλη Apache MySQL or PostgreSQL. Αυτό το metastore Hive υλοποιείται χρησιμοποιώντας πίνακες σε μια σχεσιακή βάση δεδομένων.

Τίποτα στο metastore δεν περιέχει τις ίδιες τις γραμμές. Οι εγγραφές παραμένουν στο HDFS και το metastore καταγράφει μόνο πού βρίσκεται κάθε πίνακας και πώς ονομάζονται οι στήλες του, γι' αυτό και η απώλειά του κοστίζει στο σχήμα και όχι στα δεδομένα.

Γιατί να χρησιμοποιήσετε MySQL στο Hive ως Metastore

Το backend του metastore είναι μια επιλογή, όχι ένα σταθερό μέρος του Hive, και η προεπιλογή που παρέχεται είναι σκόπιμα ελάχιστη. Τρία όρια απομακρύνουν σχεδόν κάθε εγκατάσταση από αυτό.

  • Από προεπιλογή, το Hive συνοδεύεται από τη βάση δεδομένων Derby ως metastore.
  • Το Derby μπορεί να υποστηρίξει μόνο έναν ενεργό χρήστη κάθε φορά.
  • Το Derby δεν συνιστάται σε περιβάλλον παραγωγής.

Έτσι, η λύση εδώ είναι

  • Χρήση MySQL ως μετα-αποθήκευση στο backend για τη σύνδεση πολλαπλών χρηστών με το Hive ταυτόχρονα
  • MySQL είναι η καλύτερη επιλογή για το αυτόνομο metastore

Πώς να εγκαταστήσετε και να ρυθμίσετε το Hive Metastore στο MySQL βάση δεδομένων

Τα εννέα παρακάτω βήματα εκτελούνται με τη σειρά σε έναν υπολογιστή που έχει ήδη εγκατεστημένα τα Hadoop και Hive. Κάθε βήμα ολοκληρώνεται με ένα στιγμιότυπο οθόνης της πραγματικής εξόδου του τερματικού ή του κελύφους.

Βήμα 1) Εγκατάσταση MySQL διακομιστή
Σε αυτό το βήμα, πρόκειται να εκτελέσουμε δύο εργασίες

  1. Εγκατάσταση mysql-server
  2. Έλεγχος του mysql-server και της διαδικασίας του

Χρήση του sudo apt-get να εγκαταστήσετε το mysql-server εντολή, μπορούμε να κατεβάσουμε MySQL διακομιστή. Εγκατάσταση MySQL όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Τερματικό που εκτελεί την εντολή sudo apt-get install mysql-server στο Ubuntu

Μετά την επιτυχή εγκατάσταση, MySQL θα εκτελεστεί όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης, όπου ο έλεγχος διεργασίας επιβεβαιώνει ότι η υπηρεσία είναι ενεργή.

Τερματικό που επιβεβαιώνει ότι η διεργασία mysql-server εκτελείται μετά την εγκατάσταση

Βήμα 2) Εγκατάσταση MySQL Java Connector
εγκατάσταση του MySQL Java υποδοχή. Αυτό είναι για Java εξαρτήσεις και σκοπούς σύνδεσης, επειδή το Hive φτάνει MySQL μέσω JDBC. Το επόμενο στιγμιότυπο οθόνης δείχνει την εγκατάσταση του πακέτου.

Τερματικό που εγκαθιστά το libmysql-java MySQL Java πακέτο σύνδεσης

Βήμα 3) Δημιουργήστε μαλακό σύνδεσμο για σύνδεσμο
Δημιουργία ενός soft link για τη σύνδεση στον κατάλογο Hive lib. Αυτός είναι ο soft link μεταξύ Java και MySQL, και είναι αυτό που τοποθετεί το JAR του προγράμματος οδήγησης στη διαδρομή κλάσεων Hive. Η εντολή και το αποτέλεσμά της εμφανίζονται παρακάτω.

Τερματικό που δημιουργεί έναν μαλακό σύνδεσμο για το MySQL JAR σύνδεσης στον κατάλογο Hive lib

Βήμα 4) Ρύθμιση παραμέτρων MySQL αποθήκευση στην κυψέλη
The MySQL Το shell πρέπει να ανοιχτεί ως λογαριασμός root πριν δημιουργηθεί οποιοσδήποτε χρήστης Hive, όπως φαίνεται στη συνέχεια.

Άνοιγμα τερματικού MySQL κέλυφος με την εντολή mysql -u root -p

  • Πληκτρολογήστε mysql –u root –p ακολουθούμενο από τον κωδικό πρόσβασης
  • Εδώ το –u αντιπροσωπεύει το όνομα χρήστη root και το –p υποδηλώνει τον κωδικό πρόσβασης
  • Αφού εισαγάγει την παραπάνω εντολή, ο χρήστης πρέπει να εισάγει έναν έγκυρο κωδικό πρόσβασης και στη συνέχεια να πατήσει enter.
  • Τότε θα εισέλθει σε MySQL λειτουργία κελύφους

Βήμα 5) Δημιουργήστε όνομα χρήστη και κωδικό πρόσβασης
Δημιουργία ονόματος χρήστη και κωδικού πρόσβασης για MySQLκαι παραχώρηση δικαιωμάτων. Το παρακάτω στιγμιότυπο οθόνης δείχνει τις τρεις εντολές που εκτελούνται μέσα στο MySQL κέλυφος.

MySQL shell που δημιουργεί τον λογαριασμό hiveuser και παραχωρεί δικαιώματα

Πρέπει να εκτελέσουμε τις εντολές όπως φαίνεται παρακάτω,

mysql> CREATE USER 'hiveuser'@'%' IDENTIFIED BY 'hivepassword'; 
mysql> GRANT all on *.* to 'hiveuser'@localhost identified by 'hivepassword';
mysql>  flush privileges;

On MySQL 8 η συνδυασμένη μορφή της δεύτερης πρότασης δεν αναλύεται πλέον, επειδή η IDENTIFIED BY αφαιρέθηκε από την εντολή GRANT. Δημιουργήστε πρώτα τον λογαριασμό και, στη συνέχεια, χορηγήστε του την εντολή και επαναλάβετε τη γραμμή CREATE USER για τον κεντρικό υπολογιστή localhost καθώς και για τον κεντρικό υπολογιστή wildcard.

Βήμα 6) Ρύθμιση παραμέτρων του hive-site.xml

  • Αφού το Βήμα 5 εκχωρήσει ένα όνομα χρήστη και έναν κωδικό πρόσβασης στο MySQL βάση δεδομένων και παραχωρεί δικαιώματα.
  • Εδώ θα διαμορφώσουμε ορισμένες ιδιότητες στο Hive για να έχουμε μια σύνδεση με το MySQL βάση δεδομένων.

Το αρχείο ρυθμίσεων ανοίγει από τον κατάλογο Hive conf, όπως φαίνεται στο επόμενο στιγμιότυπο οθόνης.

Άνοιγμα τερματικού hive-site.xml για επεξεργασία στον κατάλογο Hive conf

Το στιγμιότυπο οθόνης που ακολουθεί δείχνει το ολοκληρωμένο αρχείο με και τις τέσσερις ιδιότητες στη θέση τους.

hive-site.xml που δείχνει τις τέσσερις ιδιότητες σύνδεσης javax.jdo.option

Από το παραπάνω στιγμιότυπο οθόνης, παρατηρούμε τα εξής. Εδώ ορίζουμε 4 ιδιότητες που είναι απαραίτητες για τη δημιουργία MySQL ως το metastore στο Hive.

Αυτά είναι τα εξής:

  1. Αυτή η ιδιότητα είναι για τη σύνδεση URLΕδώ ορίζουμε τη ΣύνδεσηURL σε αυτήν την ιδιότητα. Λειτουργεί ως συμβολοσειρά σύνδεσης JDBC και αντιπροσωπεύει επίσης την τοποθεσία του μετα-αποθηκευτικού χώρου.
  2. Αυτή η ιδιότητα αφορά το όνομα του προγράμματος οδήγησης σύνδεσης. Εδώ, η τιμή com.mysql.jdbc.Driver είναι η τιμή που πρέπει να αναφέρουμε στην ετικέτα τιμής.
  3. Αυτή η ιδιότητα χρησιμοποιείται για τον ορισμό του ονόματος χρήστη της σύνδεσης. Σε αυτήν την περίπτωση, ορίσαμε το "hiveuser" ως το όνομα χρήστη.
  4. Αυτή η ιδιότητα χρησιμοποιείται για την αναφορά του κωδικού πρόσβασης σύνδεσης. Σε αυτό, ορίσαμε το "hivepassword" ως τον κωδικό πρόσβασης χρήστη.

Μόλις τοποθετηθούν οι ιδιότητες στο hive-site.xml, πρέπει να αποθηκεύσουμε χειροκίνητα (Ctrl+S) και να κλείσουμε το αρχείο. Αφού κλείσουμε αυτό το αρχείο, πρέπει να δημιουργήσουμε έναν πίνακα Hive και να ελέγξουμε τις λεπτομέρειες του πίνακα στο MySQL αποθήκευση.

Τοποθετήστε αυτόν τον κωδικό στο hive-site.xml

hive-site.xml

<configuration>
	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value>
		<description>metadata is stored in a MySQL server</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionDriverName</name>
		<value>com.mysql.jdbc.Driver</value>
		<description>MySQL JDBC driver class</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionUserName</name>
		<value>hiveuser</value>
		<description>user name for connecting to mysql server</description>
	</property>
	<property>
		<name>javax.jdo.option.ConnectionPassword</name>
		<value>hivepassword</value>
		<description>password for connecting to mysql server</description>
	</property>
</configuration>

Δύο παραπάνω τιμές εξαρτώνται από την έκδοση σύνδεσης που χρησιμοποιείται. MySQL Το Connector/J 8 μετονόμασε την κλάση του προγράμματος οδήγησης σε com.mysql.cj.jdbc.Driver και αναμένει επίσης μια σαφή ρύθμιση θύρας και SSL, επομένως ένα σύγχρονο URL συνήθως διαβάζει το jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false. Επειδή ο κωδικός πρόσβασης βρίσκεται σε μορφή απλού κειμένου, το αρχείο θα πρέπει να είναι αναγνώσιμο μόνο από τον λογαριασμό υπηρεσίας Hive.

Βήμα 7) Δημιουργία πίνακα
Δημιουργήστε τον πίνακα "guru99" στο Hive, όπως φαίνεται στο κέλυφος Hive παρακάτω.

Κέλυφος Hive που δημιουργεί τον πίνακα guru99 με μια ακέραια στήλη και μια συμβολοσειρά

Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής

  • Δημιουργία ενός πίνακα με όνομα «guru99» με δύο ονόματα στηλών
  • Τα ονόματα των στηλών αναφέρονται με τους τύπους δεδομένων τους, το ένα ακέραιος αριθμός και το άλλο συμβολοσειρά

Στο επόμενο βήμα, θα ελέγξουμε αν είναι αποθηκευμένο στο MySQL ή όχι.

Βήμα 8) Εισέλθετε στο MySQL λειτουργία κελύφους
Η βάση δεδομένων metastore επιλέγεται πρώτα και η λίστα πίνακα που ακολουθεί εμφανίζεται παρακάτω.

MySQL Η εκτέλεση του κελύφους χρησιμοποιεί metastore και show tables για να εμφανίσει τους πίνακες metastore

Από το παραπάνω στιγμιότυπο οθόνης, μπορούμε να παρατηρήσουμε τα εξής

  • Αρχικά, πρέπει να επιλέξουμε τη βάση δεδομένων με την εντολή "use metastore".
  • Μόλις επιλεγεί το metastore, μπορούμε να ελέγξουμε τους πίνακες που υπάρχουν σε αυτό χρησιμοποιώντας την εντολή "show tables" όπως φαίνεται στο στιγμιότυπο οθόνης.
  • Όποιοι πίνακες και αν δημιουργούνται στο Hive, τα μεταδεδομένα που αντιστοιχούν σε αυτούς τους πίνακες αποθηκεύονται στο TBLS. MySQL βάσεις δεδομένων
  • Ο πίνακας "guru99" δημιουργείται στο Hive, επομένως τα αντίστοιχα μεταδεδομένα αποθηκεύονται στο MySQL υπό TBLS

Βήμα 9) Πληκτρολογήστε Select * από το TBLS
Έλεγχος εάν ο δημιουργημένος πίνακας υπάρχει στο MySQL ή όχι. Το ερώτημα και το αποτέλεσμά του εμφανίζονται στο παρακάτω στιγμιότυπο οθόνης.

MySQL κέλυφος που εκτελεί την επιλογή * από το TBLS και εμφανίζει τη γραμμή του πίνακα guru99

Εισάγοντας Select * από το TBLS, θα εμφανιστούν οι πίνακες που δημιουργήσαμε σε λειτουργία κελύφους Hive

Από το παραπάνω στιγμιότυπο οθόνης μπορούμε να παρατηρήσουμε τα εξής:

  • Το όνομα του πίνακα "guru99" που δημιουργήθηκε στο Hive μπορεί να εμφανιστεί σε MySQL λειτουργία κελύφους
  • Εκτός από αυτό, θα παρέχει επίσης πληροφορίες όπως ο χρόνος δημιουργίας πίνακα, ο χρόνος πρόσβασης και άλλες ιδιότητες, όπως φαίνεται στο παραπάνω στιγμιότυπο οθόνης.

Πώς να αρχικοποιήσετε το σχήμα Hive Metastore με το schematool

Η σημαία createDatabaseIfNotExist στη σύνδεση URL δημιουργεί μια κενή βάση δεδομένων metastore, αλλά δεν δημιουργεί τους περίπου εβδομήντα πίνακες που αναμένει το Hive μέσα σε αυτήν. Στο Hive 1.x και σε νεότερες εκδόσεις, αυτή η εργασία ανήκει στο βοηθητικό πρόγραμμα schematool και παραλείψτε τοping Είναι ο πιο συνηθισμένος λόγος για τον οποίο ένα πρόσφατα διαμορφωμένο metastore αρνείται να ξεκινήσει.

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

Η εντολή διαβάζει τις ίδιες τέσσερις ιδιότητες από το hive-site.xml, συνδέεται με τον λογαριασμό hiveuser και εκτελεί το πακέτο script SQL που ταιριάζει με την έκδοση Hive. Μια επιτυχημένη εκτέλεση ολοκληρώνεται με ένα μήνυμα ολοκλήρωσης, μετά το οποίο η κατάσταση μπορεί να επιβεβαιωθεί ανά πάσα στιγμή.

$HIVE_HOME/bin/schematool -dbType mysql -info

Οι παρακάτω σημαίες καλύπτουν ολόκληρη τη διάρκεια ζωής ενός σχήματος μετααποθήκευσης.

Επιλογή Τι κάνει
-dbType Ονομάζει το backend, όπως mysql, derby, postgres, oracle ή mssql
-initSchema Δημιουργεί τους πίνακες μετααποθήκευσης για την τρέχουσα έκδοση του Hive
- πληροφορίες Αναφέρει την έκδοση σχήματος που έχει καταγραφεί στη βάση δεδομένων
-αναβάθμισηΣχήματος Μετεγκαθιστά ένα υπάρχον σχήμα μετά από αναβάθμιση σε Hive
-επικυρώνω Ελέγχει το σχήμα για πίνακες που λείπουν και αναντιστοιχίες εκδόσεων

Μια σχετική ιδιότητα που αξίζει να γνωρίζετε πριν από την πρώτη εκκίνηση. Όταν η τιμή hive.metastore.schema.verification είναι true, το Hive συγκρίνει την έκδοση σχήματος στο MySQL έναντι του δικού του και αρνείται να εκτελεστεί σε περίπτωση αναντιστοιχίας. Αυτός ο έλεγχος αποτελεί μέτρο ασφαλείας, επομένως η σωστή αντίδραση είναι να εκτελεστεί η αναβάθμιση αντί να απενεργοποιηθεί. Το ίδιο MySQL Το backend χρησιμοποιείται από την εγκατάσταση Hive που καλύπτεται στο εγκαταστήστε το Hive στο Ubuntu.

Συνηθισμένα σφάλματα Hive Metastore και πώς να τα διορθώσετε

Οι περισσότερες αποτυχίες σε αυτό το στάδιο παράγουν ένα από τα λίγα μηνύματα, και το καθένα δείχνει ένα συγκεκριμένο βήμα παραπάνω και όχι το ίδιο το Hive.

Σύμπτωμα Αιτία και διόρθωση
Δεν βρέθηκαν πληροφορίες έκδοσης στο metastore Το σχήμα δεν δημιουργήθηκε ποτέ. Εκτελέστε το schematool με -initSchema στην ίδια βάση δεδομένων που ονομάζεται στη σύνδεση. URL
ClassNotFoundException για το πρόγραμμα οδήγησης JDBC Το αρχείο JAR σύνδεσης λείπει από τον κατάλογο lib του Hive ή χρησιμοποιείται το Connector/J 8 και η κλάση είναι τώρα com.mysql.cj.jdbc.Driver. Ελέγξτε ξανά τον μαλακό σύνδεσμο από το Βήμα 3.
Η πρόσβαση απαγορεύτηκε για τον χρήστη hiveuser Τα δικαιώματα παραχωρήθηκαν μόνο σε έναν κεντρικό υπολογιστή. Δημιουργήστε τον λογαριασμό τόσο για τον localhost όσο και για τον κεντρικό υπολογιστή με wildcard και, στη συνέχεια, εκτελέστε τα δικαιώματα εκκαθάρισης.
Σφάλμα σύνταξης κοντά στο IDENTIFIED BY MySQL Το 8 αφαιρέθηκε από την πρόταση GRANT. Εκτελέστε πρώτα την εντολή CREATE USER και στη συνέχεια την εντολή GRANT.
Δεν επιτρέπεται η ανάκτηση δημόσιου κλειδιού Το Connector/J 8 αρνείται μια μη κρυπτογραφημένη χειραψία από προεπιλογή. Προσθέστε τις συναρτήσεις useSSL=false και allowPublicKeyRetrieval=true στο JDBC. URL σε ένα αξιόπιστο δίκτυο
Λείπουν πίνακες μετά από αναβάθμιση σε Hive Το σχήμα εξακολουθεί να ταιριάζει με την παλιά έκδοση. Εκτελέστε το schematool με -upgradeSchema αντί να απενεργοποιήσετε την επαλήθευση σχήματος.

Μόλις το metastore απαντήσει αξιόπιστα, οι ορισμοί πινάκων που καταγράφει δημιουργούνται με τις δηλώσεις που περιγράφονται στο Η κυψέλη δημιουργεί, τροποποιεί και αποθέτει πίνακα.

Συχνές Ερωτήσεις

Η Hive στέλνει υποστήριξη για το Ντέρμπι, MySQL, PostgreSQL, Oracle και Microsoft SQL Serverκαι το schematool τα δέχεται όλα μέσω της σημαίας -dbType. Το Derby παραμένει το προεπιλεγμένο και περιορίζεται σε μία μόνο συνεδρία.

Το Embedded εκτελεί το Derby μέσα στη διεργασία Hive. Το Local εκτελεί τον κώδικα μετα-αποθήκευσης μέσα στο Hive αλλά σε μια εξωτερική βάση δεδομένων, όπως π.χ. MySQLΤο Remote διαχειρίζεται το metastore ως δική του υπηρεσία Thrift, την οποία χρησιμοποιούν από κοινού αρκετοί πελάτες.

Βάσεις δεδομένων εγγραφών DBS, πίνακες εγγραφών TBLS, ορισμοί στηλών εγγραφών COLUMNS_V2, περιγραφείς αποθήκευσης εγγραφών SDS και καταχωρήσεις διαμερισμάτων εγγραφών PARTITIONS. Αυτά τα ονόματα είναι εσωτερικά, επομένως υποβάλετε ερωτήματα για έλεγχο αντί να τα επεξεργαστείτε χειροκίνητα.

Αποθηκεύστε το σε ένα αρχείο αποθήκευσης κλειδιών παρόχου διαπιστευτηρίων Hadoop και τοποθετήστε το hive.metastore.credential.provider.path σε αυτό το αρχείο και, στη συνέχεια, καταργήστε την απλή τιμή. Ο περιορισμός των δικαιωμάτων αρχείων στο hive-site.xml είναι η ελάχιστη εναλλακτική λύση.

Τα αρχεία στο HDFS επιβιώνουν, αλλά κάθε ορισμός πίνακα, διαμερίσματος και στήλης εξαφανίζεται και το Hive δεν μπορεί πλέον να τα διαβάσει. Κανονικό MySQL Τα dumps της βάσης δεδομένων metastore αποτελούν επομένως μέρος της κανονικής δημιουργίας αντιγράφων ασφαλείας του συμπλέγματος.

Η υπηρεσία metastore Thrift εκτελεί ακρόαση στη θύρα 9083 από προεπιλογή, η οποία έχει οριστεί μέσω του hive.metastore.port. Οι υπολογιστές-πελάτες φτάνουν σε αυτήν με το hive.metastore.uris αντί για απευθείας διαπιστευτήρια JDBC, τα οποία διατηρούν τον κωδικό πρόσβασης της βάσης δεδομένων μακριά από τους υπολογιστές-πελάτες.

Ναι. Η ανίχνευση ανωμαλιών στα αρχεία καταγραφής ερωτημάτων μετακαταστημάτων επισημαίνει ξαφνικές αιχμές κλήσεων, αργές καταχωρίσεις διαμερισμάτων και ανεξέλεγκτη ανάπτυξη πινάκων πριν από τη λήξη του χρονικού ορίου των εργασιών. Το μοντέλο επισημαίνει τους υποψηφίους και ένας διαχειριστής εξακολουθεί να επιβεβαιώνει την αιτία.

Το Copilot δημιουργεί ένα πρόχειρο σχέδιο για το μπλοκ ιδιοτήτων javax.jdo.option από ένα σύντομο σχόλιο και οι βοηθοί πρακτόρων μπορούν να δημιουργήσουν σενάρια για ολόκληρη τη ρύθμιση. Επαληθεύστε την κλάση προγράμματος οδήγησης και τη θύρα, επειδή τα δεδομένα εκπαίδευσης εξακολουθούν να ευνοούν το παλαιότερο όνομα σύνδεσης.

Συνοψίστε αυτήν την ανάρτηση με: