0
Help us understand the problem. What are the problem?

posted at

Can't connect to MySQL server エラーの解消

mac上で、pythonを利用してmysqlにデータを書き込もうとしたところ、下記エラーが発生しました。

mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'localhost:3306' (61 Connection refused)

実行したファイルは、下記になります。

update_sql_from_csv.py
### インポート
import csv
import mysql.connector
 
### ファイルオープン
file = open("bme280_db.csv", "r")
 
### ファイル読み込み
members = csv.reader(file)
 
### DB接続
cnx = mysql.connector.connect(host='localhost', user='root', password='', database='bme280db')
 
### カーソル作成
cursor = cnx.cursor()
 
### INSERT文作成
sql = "INSERT INTO weather_forecast ( date_time, pressure, temperature, humidity) VALUES (%s, %s, %s, %s)"
 
### データ挿入
data_count = 0
for value in members:
        if not data_count == 0:
        ### データ挿入実行
            cursor.execute(sql, value)
        data_count += 1

### コミット
cnx.commit()
 
### カーソルクローズ
cursor.close()
 
### DB切断
cnx.close()
 
### ファイルクローズ
file.close()

環境

環境は、下記の通り。MANPを利用し、サーバーは、起動済みです。
OS: macOS Catalina version 10.15.7
デバイス : MacBook Pro (Retina, 13-inch, Early 2013)
PHP version: 8.0.8

原因調査

こちらの記事を参考に、ひとつづ原因を潰していきました。

MySQLのポート番号

MySQLのデフォルトのポートは、3306。こちらが正しいかどうか調べてみました。

mysql> show variables like 'port';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 8889  |
+---------------+-------+
1 row in set (0.01 sec)

違っていました。pythonのファイルの一部を下記のようにportを指定するように変更し、再度実行すると、エラーは解消しました。
cnx = mysql.connector.connect(host='localhost', port='8889', user='root', password='', database='bme280db')

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?