UnboundLocalError: local variable ‘connection’ referenced before assignment
エラーメッセージ「Unknown database 'nbsystem’」は、指定したデータベースが存在しないことを示しています。この問題を解決するには、以下の手順を実行します。
1. データベースの存在を確認する
まず、データベースが存在するかを確認します。MySQLに接続し、データベースのリストを表示します。
sh mysql -h your-rds-endpoint.rds.amazonaws.com -P 3306 -u yourusername -p
ログイン後、次のSQLコマンドを実行します。
sql SHOW DATABASES;
nbsystemという名前のデータベースがリストに含まれていない場合、データベースを作成します。
2. データベースの作成
MySQLにログインした状態で、データベースを作成します。
sql CREATE DATABASE nbsystem;
3. スクリプトの修正
スクリプトで、データベースの名前が正しいことを確認します。
python
import mysql.connector
from mysql.connector import Error
def connect():
""" Connect to MySQL database """
connection = None
try:
connection = mysql.connector.connect(
host='your-rds-endpoint.rds.amazonaws.com',
database='nbsystem',
user='yourusername',
password='yourpassword'
)
if connection.is_connected():
db_info = connection.get_server_info()
print(f"Connected to MySQL database... MySQL Server version on {db_info}")
cursor = connection.cursor()
cursor.execute("select database();")
record = cursor.fetchone()
print(f"You're connected to database: {record}")
except Error as e:
print(f"Error while connecting to MySQL: {e}")
finally:
if connection and connection.is_connected():
cursor.close()
connection.close()
print("MySQL connection is closed")
if __name__ == '__main__':
connect()
4. エラーハンドリングの修正
接続が失敗した場合に connection 変数が参照されないように、エラーハンドリングを修正します。
python
import mysql.connector
from mysql.connector import Error
def connect():
""" Connect to MySQL database """
connection = None
try:
connection = mysql.connector.connect(
host='your-rds-endpoint.rds.amazonaws.com',
database='nbsystem',
user='yourusername',
password='yourpassword'
)
if connection.is_connected():
db_info = connection.get_server_info()
print(f"Connected to MySQL database... MySQL Server version on {db_info}")
cursor = connection.cursor()
cursor.execute("select database();")
record = cursor.fetchone()
print(f"You're connected to database: {record}")
except Error as e:
print(f"Error while connecting to MySQL: {e}")
finally:
if connection and connection.is_connected():
cursor.close()
connection.close()
print("MySQL connection is closed")
if __name__ == '__main__':
connect()
5. 再試行
スクリプトを再実行して、接続を試みます。
bash python your_script.py
これで、データベースが存在し、正しく指定されていれば、接続が成功するはずです。もし問題が続く場合は、さらに詳細なエラーメッセージや状況を提供してください。

ディスカッション
コメント一覧
まだ、コメントがありません