django执行python manage.py makemigrations时报Access denied for user 'root'@'localhost',搞了我整整两晚上,终于解决了!!!

报错如下 :

E:\pythonStudy\myPythonProject\django180513\project>python manage.py makemigrations

Traceback (most recent call last):
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\base\base.py", line 213, in ensure_connection
    self.connect()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\base\base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\mysql\base.py", line 274, in get_new_connection
    conn = Database.connect(**conn_params)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\__init__.py", line 90, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 704, in __init__
    self.connect()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 974, in connect
    self._request_authentication()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 1203, in _request_authentication
    auth_packet = self._read_packet()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 1059, in _read_packet
    packet.check_error()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 384, in check_error
    err.raise_mysql_exception(self._data)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")


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


Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\core\management\__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\core\management\__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\core\management\base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\core\management\base.py", line 327, in execute
    self.check()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\core\management\base.py", line 359, in check
    include_deployment_checks=include_deployment_checks,
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\core\management\base.py", line 346, in _run_checks
    return checks.run_checks(**kwargs)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\core\checks\registry.py", line 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\core\checks\model_checks.py", line 30, in check_all_models
    errors.extend(model.check(**kwargs))
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\models\base.py", line 1283, in check
    errors.extend(cls._check_fields(**kwargs))
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\models\base.py", line 1358, in _check_fields
    errors.extend(field.check(**kwargs))
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\models\fields\__init__.py", line 913, in check
    errors = super(AutoField, self).check(**kwargs)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\models\fields\__init__.py", line 219, in check
    errors.extend(self._check_backend_specific_checks(**kwargs))
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\models\fields\__init__.py", line 322, in _check_backend_specific_checks
    return connections[db].validation.check_field(self, **kwargs)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\mysql\validation.py", line 49, in check_field
    field_type = field.db_type(self.connection)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\models\fields\__init__.py", line 644, in db_type
    return connection.data_types[self.get_internal_type()] % data
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\mysql\base.py", line 174, in data_types
    if self.features.supports_microsecond_precision:
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\mysql\features.py", line 53, in supports_microsecond_precision
    return self.connection.mysql_version >= (5, 6, 4) and Database.version_info >= (1, 2, 5)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\utils\functional.py", line 35, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\mysql\base.py", line 385, in mysql_version
    with self.temporary_connection() as cursor:
  File "C:\Users\E570\AppData\Local\Programs\Python\Python36\lib\contextlib.py", line 81, in __enter__
    return next(self.gen)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\base\base.py", line 591, in temporary_connection
    cursor = self.cursor()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\base\base.py", line 254, in cursor
    return self._cursor()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\base\base.py", line 229, in _cursor
    self.ensure_connection()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\base\base.py", line 213, in ensure_connection
    self.connect()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\utils\six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\base\base.py", line 213, in ensure_connection
    self.connect()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\base\base.py", line 189, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\django\db\backends\mysql\base.py", line 274, in get_new_connection
    conn = Database.connect(**conn_params)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\__init__.py", line 90, in Connect
    return Connection(*args, **kwargs)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 704, in __init__
    self.connect()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 974, in connect
    self._request_authentication()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 1203, in _request_authentication
    auth_packet = self._read_packet()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 1059, in _read_packet
    packet.check_error()
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\connections.py", line 384, in check_error
    err.raise_mysql_exception(self._data)
  File "C:\Users\E570\Anaconda3\Lib\site-packages\pymysql\err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)

django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")


网上一般都说是用户名或密码错误,但我确认我没有输错,用户名是root,密码是mysql,在cmd下mysql -uroot -p mysql就可以进入数据库。以为是Pycharm中输入的问题,可是我把DATABASES配置重新配置也还是不行。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'sunck',
        'USER': 'root',
        'PASSWORD':'mysql',
        'HOST':'localhost',
        'PORT':'3306',
    }
}



最后解决办法 :

修改Mysql root密码为root,执行:python manage.py makemigrations,却报:

No changes detected

网上查了一下,需要先执行 python manage.py makemigrations --empty myApp
Migrations for 'myApp':
  myApp\migrations\0001_initial.py

之后再执行python manage.py makemigrations
Migrations for 'myApp':
  myApp\migrations\0002_grades_students.py
    - Create model Grades

    - Create model Students

再执行python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, myApp, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying myApp.0001_initial... OK
  Applying myApp.0002_grades_students... OK

  Applying sessions.0001_initial... OK


完美解决!

今晚终于能睡得香了!!!

但是却出了一个新问题:

难道root密码不能为mysql?还是我输入法有问题?还是什么问题?

希望有人能解答,先谢谢了!

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐