Käytän mysql:n mysql-connector-python
-kirjastoa yrittäessäni yhdistää lähiverkon muiden laitteiden MariaDB
-tietokantaan, mutta se epäonnistui ja lisäksi ohjelma sulkeutui suoraan ilman virheilmoituksia.
Ongelman kuvaus
Ohjelmistoversiot:
-
MariaDB server 10.11.6
-
mysql-connector-python 9.2.0
-
MariaDB-palvelin, IP on 192.168.1.60
-
Asiakas, IP on 192.168.1.35
Python-koodi on seuraava:
import mysql.connector
import logging
# Konfiguroi lokitus
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
try:
logging.info("Yhdistetään tietokantaan...")
connection = mysql.connector.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx")
logging.info("Yhteys muodostettu.")
# Luo kursoriobjekti SQL-kyselyiden suorittamista varten
cursor = connection.cursor()
# Hae kaikki tietokannat
logging.info("Suoritetaan SHOW DATABASES -kysely...")
cursor.execute("SHOW DATABASES")
# Tulosta kaikki tietokannat ja jokaisen tietokannan taulut
for (database,) in cursor.fetchall():
logging.info(f"Tietokanta: {database}")
# Vaihda nykyiseen tietokantaan
cursor.execute(f"USE {database}")
# Hae ja tulosta kaikki nykyisen tietokannan taulut
cursor.execute("SHOW TABLES")
for (table,) in cursor.fetchall():
logging.info(f" Taulu: {table}")
# Sulje kursori ja yhteys
cursor.close()
connection.close()
logging.info("Yhteys suljettu.")
except mysql.connector.Error as err:
logging.error(f"Virhe: {err}")
except Exception as e:
logging.error(f"Odottamaton virhe: {e}")
Tämän koodin suorittamisen jälkeen ohjelma sulkeutuu suoraan antamatta virheilmoituksia.
Katsoin MariaDB
-palvelimen lokitietoja ja löysin seuraavan virheilmoituksen.
mariadbd: [Warning] Aborted connection 48 to db: 'unconnected' user: 'unauthenticated' host: '192.168.1.35' (This connection closed normally without authentication)
Ongelman ratkaisuyritykset
Koska MariaDB
-palvelin pystyy vastaanottamaan yhteydenottopyynnön, molempien laitteiden palomuurin asetukset ovat kunnossa.
Tarkistin kirjautumiskäyttäjän oikeudet ja nekin olivat kunnossa.
Etsin paljon tietoa ja kokeilin erilaisia menetelmiä. Kuitenkin ongelmaa ei pystytty ratkaisemaan millään tavalla.
Lopulta kokeilin toista Python-kirjastoa, pymysql
(versio: 1.1.1), yhdistääkseni MariaDB
-palvelimeen seuraavalla koodilla:
import pymysql
# Yhdistä MariaDB-palvelimeen
conn = pymysql.connect(
host="192.168.1.60",
port=3306,
user="mysql",
password="xxx"
)
cursor = conn.cursor()
cursor.execute("SELECT VERSION()")
print("MariaDB version:", cursor.fetchone()[0])
cursor.close()
conn.close()
Yhteyden muodostaminen ja MariaDB:n version tulostaminen onnistui ilman virheitä.
Silti en tiedä syytä, miksi aiempi yhteys epäonnistui.
Muut versiot tästä sivusta
Tästä artikkelista on olemassa useita kieliversioita.
Jos haluat jättää kommentin, vieraile seuraavilla sivuilla:
Nämä sivut tukevat vain selaamista, eivätkä salli kommenttien jättämistä, mutta tarjoavat enemmän kielivaihtoehtoja ja latautuvat nopeammin:
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
Tämä artikkeli on käännetty kiinasta (yksinkertaistettu) suomeksi tekoälyn avulla.