You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Python database.py连接MySQL报1049未知数据库错误求解决方案

问题排查及修复方案
  • 错误1:混淆了MySQL与SQLite的数据库使用逻辑
    MySQL是服务型数据库,数据库由服务端统一管理,没有.db后缀的本地文件,你代码里填写的Prototype.db是SQLite这类文件型数据库的命名习惯,不适用于MySQL。同时你在连接前没有预先在MySQL中创建对应数据库,直接指定不存在的库名连接必然触发1049报错。
  • 错误2:建表SQL语法缺失右括号
    你写的建表语句末尾少了闭合的),即便数据库连接成功,执行到此处也会触发语法报错。
  • 额外注意:MySQL在Linux环境下默认对库名、表名大小写敏感,Windows下默认不敏感,你的报错里显示找不到的是全小写的prototype.db,就是系统自动转小写后匹配不到导致的。

修复步骤

  1. 去掉数据库名的.db后缀,建议统一用小写命名,比如改为prototype
  2. 调整连接逻辑:先不指定database连接MySQL,先执行建库语句,再切换到对应库,避免预先手动建库的操作
  3. 补全建表语句的右括号,同时将查询逻辑改为参数化写法,避免SQL注入风险

修正后的完整代码如下:

import mysql.connector

# 先无库连接,创建数据库(如果不存在)
MyDB = mysql.connector.connect(
    host = "localhost",
    user = "root",
    password = ""
)
MyCursor = MyDB.cursor()
# 创建数据库
MyCursor.execute("CREATE DATABASE IF NOT EXISTS prototype")
# 切换到目标数据库
MyCursor.execute("USE prototype")

# 补全建表语句的右括号
MyCursor.execute("CREATE TABLE IF NOT EXISTS Images (id INTEGER(45) NOT NULL AUTO_INCREMENT PRIMARY KEY, Photo BLOB NOT NULL)")

def InsertBlob(FilePath):
    with open(FilePath, "rb") as File:
        BinaryData = File.read()
    SQLStatement = "INSERT INTO Images (Photo) VALUES (%s)"
    MyCursor.execute(SQLStatement, (BinaryData, ) )
    MyDB.commit()

def RetrieveBlob(ID):
    SQLStatement2 = "SELECT * FROM Images WHERE id = %s"
    # 用参数化查询避免注入风险
    MyCursor.execute(SQLStatement2, (ID,))
    MyResult = MyCursor.fetchone()[1]
    StoreFilePath = "IMG/img{0}.jpg".format(str(ID))
    print(MyResult)
    
    with open(StoreFilePath, "wb") as File:
        File.write(MyResult)


print("1. Insert Image\n2. Read Image")
MenuInput = input()

if int(MenuInput) ==1:
    UserFilePath = input("Enter File Path:")
    InsertBlob(UserFilePath)
elif int(MenuInput) ==2:
    UserIDChoice = input("Enter ID:")
    RetrieveBlob(UserIDChoice)

内容的提问来源于stack exchange,提问作者Dancun Gerald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:24:03