Li FRANK 2024-02-29 17:00 采纳率: 68.9%
浏览 24
已结题

Django 报错:django.db.utils.ProgrammingError: (1146, "Table 'mysql.time_zone_name' doesn't exist")

代码:https://ask.csdn.net/questions/8067154?spm=1001.2014.3001.5501
采用檀越剑指大厂的回答,修改后又报错了:

Traceback (most recent call last):
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\utils.py", line 103, in _execute
    return self.cursor.execute(sql)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\mysql\base.py", line 75, in execute
    return self.cursor.execute(query, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\cursors.py", line 153, in execute
    result = self._query(query)
             ^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\cursors.py", line 322, in _query
    conn.query(q)
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 558, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 822, in _read_query_result
    result.read()
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 1207, in read
    self._read_result_packet(first_packet)
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 1284, in _read_result_packet
    self._read_rowdata_packet()
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 1331, in _read_rowdata_packet
    packet = self.connection._read_packet()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 772, in _read_packet
    packet.raise_for_error()
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.ProgrammingError: (1146, "Table 'mysql.time_zone_name' doesn't exist")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\86189\Desktop\Web\Django\blog\manage.py", line 22, in <module>
    main()
  File "C:\Users\86189\Desktop\Web\Django\blog\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Program Files\Python311\Lib\site-packages\django\core\management\__init__.py", line 442, in execute_from_command_line
    utility.execute()
  File "C:\Program Files\Python311\Lib\site-packages\django\core\management\__init__.py", line 436, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Program Files\Python311\Lib\site-packages\django\core\management\base.py", line 412, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Program Files\Python311\Lib\site-packages\django\core\management\base.py", line 458, in execute
    output = self.handle(*args, **options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\core\management\base.py", line 106, in wrapper
    res = handle_func(*args, **kwargs)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\core\management\commands\makemigrations.py", line 158, in handle
    loader.check_consistent_history(connection)
  File "C:\Program Files\Python311\Lib\site-packages\django\db\migrations\loader.py", line 313, in check_consistent_history
    applied = recorder.applied_migrations()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\migrations\recorder.py", line 89, in applied_migrations
    if self.has_table():
       ^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\migrations\recorder.py", line 63, in has_table
    with self.connection.cursor() as cursor:
         ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\base\base.py", line 316, in cursor
    return self._cursor()
           ^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\base\base.py", line 292, in _cursor
    self.ensure_connection()
  File "C:\Program Files\Python311\Lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\base\base.py", line 275, in ensure_connection
    self.connect()
  File "C:\Program Files\Python311\Lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\base\base.py", line 258, in connect
    self.init_connection_state()
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\mysql\base.py", line 265, in init_connection_state
    super().init_connection_state()
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\base\base.py", line 225, in init_connection_state
    self.check_database_version_supported()
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\base\base.py", line 195, in check_database_version_supported
    self.features.minimum_database_version is not None
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\utils\functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\mysql\features.py", line 67, in minimum_database_version
    if self.connection.mysql_is_mariadb:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\utils\functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\mysql\base.py", line 447, in mysql_is_mariadb
    return "mariadb" in self.mysql_server_info.lower()
                        ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\utils\functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\mysql\base.py", line 433, in mysql_server_info
    return self.mysql_server_data["version"]
           ^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\utils\functional.py", line 47, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
                                         ^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\mysql\base.py", line 411, in mysql_server_data
    cursor.execute(
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\utils.py", line 122, in execute
    return super().execute(sql, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\utils.py", line 79, in execute
    return self._execute_with_wrappers(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\utils.py", line 92, in _execute_with_wrappers
    return executor(sql, params, many, context)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\utils.py", line 100, in _execute
    with self.db.wrap_database_errors:
  File "C:\Program Files\Python311\Lib\site-packages\django\db\utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\utils.py", line 103, in _execute
    return self.cursor.execute(sql)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\django\db\backends\mysql\base.py", line 75, in execute
    return self.cursor.execute(query, args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\cursors.py", line 153, in execute
    result = self._query(query)
             ^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\cursors.py", line 322, in _query
    conn.query(q)
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 558, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 822, in _read_query_result
    result.read()
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 1207, in read
    self._read_result_packet(first_packet)
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 1284, in _read_result_packet
    self._read_rowdata_packet()
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 1331, in _read_rowdata_packet
    packet = self.connection._read_packet()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\connections.py", line 772, in _read_packet
    packet.raise_for_error()
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\protocol.py", line 221, in raise_for_error
    err.raise_mysql_exception(self._data)
  File "C:\Program Files\Python311\Lib\site-packages\pymysql\err.py", line 143, in raise_mysql_exception
    raise errorclass(errno, errval)
django.db.utils.ProgrammingError: (1146, "Table 'mysql.time_zone_name' doesn't exist")

如何处理?

  • 写回答

2条回答 默认 最新

  • Kwan的解忧杂货铺 2024-02-29 17:01
    关注

    Li FRANK 下午好🌅🌅🌅
    本答案参考通义千问

    这个错误是由于在尝试执行数据库查询时,Django找不到名为mysql.time_zone_name的表。这通常发生在使用MySQL时,因为time_zone_name表是MySQL服务器用来存储时区信息的,但在某些情况下,比如从MariaDB升级或迁移过程中可能没有创建这个表。

    以下是解决这个问题的步骤:

    1. 检查数据库版本

      • 确认你的数据库是否为MySQL而不是MariaDB,因为MariaDB不包含time_zone_name表。
      • 如果你使用的是MariaDB,可以考虑将django.db.backends.mysql更改为django.db.backends mariadb
    2. 创建time_zone_name

      • 在MySQL中运行以下命令手动创建这个表:
        CREATE TABLE IF NOT EXISTS `time_zone_name` (
          `name` VARCHAR(64) NOT NULL,
          `offset` BIGINT NOT NULL,
          `dst_offset` BIGINT DEFAULT NULL,
          `abbreviation` VARCHAR(16) NOT NULL,
          PRIMARY KEY (`name`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
        
    3. 在Django中更新设置

      • 打开settings.py文件,在DATABASES部分确保TIME_ZONE_NAME_TABLE设置正确。如果你使用的是MariaDB,它应该是django.db.backends.mariadb,并且可能需要设置TIME_ZONE_NAME_TABLE
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mariadb', # or 'django.db.backends.mysql'
                'NAME': 'your_database_name',
                'USER': 'your_username',
                'PASSWORD': 'your_password',
                'HOST': 'your_host',
                'PORT': your_port,
                'OPTIONS': {
                    'TIME_ZONE_NAME_TABLE': 'time_zone_name',  # For MariaDB
                },
            }
        }
        
    4. 迁移数据库

      • 清理迁移文件(如果有的话):
        python manage.py makemigrations --empty
        
      • 然后再次运行迁移以更新数据库结构:
        python manage.py migrate
        
    5. 重启应用

      • 重启你的开发服务器以应用新的数据库结构。

    按照这些步骤操作后,你应该能够解决ProgrammingError: (1146, "Table 'mysql.time_zone_name' doesn't exist")的问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月29日
  • 已采纳回答 2月29日
  • 创建了问题 2月29日

悬赏问题

  • ¥15 如何利用c++ MFC绘制复杂网络多层图
  • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
  • ¥15 python螺旋图像
  • ¥15 算能的sail库的运用
  • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
  • ¥15 找代写python里的jango设计在线书店
  • ¥15 请教如何关于Msg文件解析
  • ¥200 sqlite3数据库设置用户名和密码
  • ¥15 AutoDL无法使用docker install吗?
  • ¥15 cups交叉编译后移植到tina sdk的t113,只需要实现usb驱动打印机,打印pdf文件