Ninatumia maktaba ya mysql-connector-python ya mysql, kujaribu kuunganisha kwenye hifadhidata ya MariaDB ya vifaa vingine ndani ya mtandao wa eneo, lakini imeshindikana, na inatoka moja kwa moja bila kutoa ujumbe wowote wa makosa.

Maelezo ya tatizo

Toleo la programu:

  • MariaDB server 10.11.6

  • mysql-connector-python 9.2.0

  • MariaDB server, IP ni 192.168.1.60

  • Mteja, IP ni 192.168.1.35

Msimbo wa Python ni kama ifuatavyo:

import mysql.connector  
import logging  
  
# Sanidi kumbukumbu ya magogo  
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')  
  
try:  
    logging.info("Inaunganisha kwenye hifadhidata...")  
    connection = mysql.connector.connect(  
        host="192.168.1.60",  
        port=3306,  
        user="mysql",  
        password="xxx")  
    logging.info("Muunganisho umeanzishwa.")  
  
    # Unda kitu cha kishale, kinachotumika kutekeleza maswali ya SQL  
    cursor = connection.cursor()  
  
    # Pata hifadhidata zote  
    logging.info("Inatekeleza swali la SHOW DATABASES...")  
    cursor.execute("SHOW DATABASES")  
  
    # Chapisha hifadhidata zote na majina ya jedwali katika kila hifadhidata  
    for (database,) in cursor.fetchall():  
        logging.info(f"Hifadhidata: {database}")  
  
        # Badilisha hadi hifadhidata ya sasa  
        cursor.execute(f"USE {database}")  
  
        # Pata na uchapishe majedwali yote katika hifadhidata ya sasa  
        cursor.execute("SHOW TABLES")  
  
        for (table,) in cursor.fetchall():  
            logging.info(f"  Jedwali: {table}")  
  
    # Funga kishale na muunganisho  
    cursor.close()  
    connection.close()  
    logging.info("Muunganisho umefungwa.")  
  
except mysql.connector.Error as err:  
    logging.error(f"Hitilafu: {err}")  
except Exception as e:  
    logging.error(f"Hitilafu isiyotarajiwa: {e}")

Baada ya kuendesha msimbo huu, inatoka moja kwa moja bila kutoa ujumbe wowote wa makosa.

Niliangalia rekodi za huduma za seva ya MariaDB, na kupata ujumbe ufuatao wa makosa.

mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)

Kujaribu kutatua tatizo

Kwa sababu seva ya MariaDB inaweza kupokea ombi la muunganisho, inamaanisha kuwa usanidi wa ngome wa vifaa vyote viwili ni wa kawaida.

Niliangalia ruhusa za mtumiaji aliyeingia, na nikagundua kuwa pia ni za kawaida.

Nilitafuta habari nyingi na kujaribu njia mbalimbali. Lakini kwa namna yoyote, sikuweza kutatua tatizo hili.

Hatimaye, nilijaribu kutumia maktaba nyingine ya python pymysql (toleo: 1.1.1) kuunganisha kwenye seva ya MariaDB, msimbo ni kama ifuatavyo:

import pymysql  
  
# Unganisha kwenye seva ya MariaDB  
conn = pymysql.connect(  
    host="192.168.1.60",  
    port=3306,  
    user="mysql",  
    password="xxx"  
)  
  
cursor = conn.cursor()  
cursor.execute("SELECT VERSION()")  
print("Toleo la MariaDB:", cursor.fetchone()[0])  
  
cursor.close()  
conn.close()

Hakuna hitilafu zozote, muunganisho ulifanikiwa na toleo la MariaDB lilichapishwa.

Lakini bado sijui sababu ya kushindwa kuunganisha hapo awali.

Matoleo mengine ya ukurasa huu

Makala hii ina matoleo katika lugha nyingi.

Ikiwa ungependa kutoa maoni, tafadhali tembelea ukurasa ufuatao:

ZH EN ZH-TW JA

Kurasa hizi zinaweza tu kutazamwa, huwezi kutoa maoni au kuacha ujumbe, lakini hutoa chaguzi zaidi za lugha na wakati wa kupakia mfupi:

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO

Makala haya yametafsiriwa kutoka Chinese (Simplified) hadi Swahili na AI.