【问题标题】:Use Django and MySQL on Windows在 Windows 上使用 Django 和 MySQL
【发布时间】:2010-12-07 12:39:50
【问题描述】:

我刚开始接触 Python 并决定也下载 Django 框架,我的工作正常,但后来我尝试创建我的第一个“Django 应用程序”(Django 网站上的教程),当我遇到“数据库设置”我开始遇到问题我使用的是 Windows 7,在上传到服务器之前我一直在 WAMP 中使用 MySQL,所以我想我也会在这里尝试这个,但我就是不能即使在像这样配置 settings.py 之后也可以连接它:

DATABASE_ENGINE = 'mysql'           # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
DATABASE_NAME = 'Python'             # Or path to database file if using sqlite3.
DATABASE_USER = 'root'             # Not used with sqlite3.
DATABASE_PASSWORD = ''         # Not used with sqlite3.
DATABASE_HOST = 'localhost'             # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = ''             # Set to empty string for default. Not used with sqlite3.

然后我下载并设法正确安装 MySQLdb,因此我现在可以执行 python import MySQLdb 但是我收到此消息,我真的不知道如何解决这个问题:

Traceback (most recent call last):
  File "manage.py", line 11, in <module>
    execute_manager(settings)
  File "C:\Python26\lib\site-packages\django\core\management\__init__.py", line
362, in execute_manager
    utility.execute()
  File "C:\Python26\lib\site-packages\django\core\management\__init__.py", line
303, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python26\lib\site-packages\django\core\management\base.py", line 195,
 in run_from_argv
    self.execute(*args, **options.__dict__)
  File "C:\Python26\lib\site-packages\django\core\management\base.py", line 221,
 in execute
    self.validate()
  File "C:\Python26\lib\site-packages\django\core\management\base.py", line 249,
 in validate
    num_errors = get_validation_errors(s, app)
  File "C:\Python26\lib\site-packages\django\core\management\validation.py", lin
e 67, in get_validation_errors
    connection.validation.validate_field(e, opts, f)
  File "C:\Python26\lib\site-packages\django\db\backends\mysql\validation.py", l
ine 15, in validate_field
    db_version = connection.get_server_version()
  File "C:\Python26\lib\site-packages\django\db\backends\mysql\base.py", line 29
7, in get_server_version
    self.cursor()
  File "C:\Python26\lib\site-packages\django\db\backends\__init__.py", line 81,
in cursor
    cursor = self._cursor()
  File "C:\Python26\lib\site-packages\django\db\backends\mysql\base.py", line 28
1, in _cursor
    self.connection = Database.connect(**kwargs)
  File "C:\Python26\lib\site-packages\MySQLdb\__init__.py", line 75, in Connect
    return Connection(*args, **kwargs)
  File "C:\Python26\lib\site-packages\MySQLdb\connections.py", line 170, in __in
it__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2003, "Can't connect to MySQL server on 'lo
calhost' (10061)")

我还是应该配置一些东西还是我在某些时候配置错误?此外,我不完全确定此时是否应该运行 WAMP =S,但在 Google 上找不到任何关于我面临的问题的信息。

【问题讨论】:

  • 您确定 MySQL 正在运行吗?如果您使用的是 WAMP,则可能需要运行它才能使用 MySQL。除非你知道你已经单独运行 MySQL。
  • 我确定当我单击 WAMP 图标然后单击 MySQL 文件夹,然后服务文件夹“启动/恢复服务”被禁用并且它显示“正在运行”我也尝试停止它并重新启动它但还是什么都没有
  • 我遇到了同样的问题,只是将:DATABASE_HOST = 'localhost' 替换为 DATABASE_HOST = '127.0.0.1' 解决了这个问题

标签: mysql django windows-7


【解决方案1】:

查看您安装 MySQL 的目录,可能类似于 C:\Program Files\MySQL\MySQL Server 5.0。查看 my.ini 文件。检查服务器部分。它看起来像这样:

# SERVER SECTION
# ----------------------------------------------------------------------
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.
#
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306

您使用的端口号是多少?好的,进入命令行运行mysql:

C:\Users\foobar>mysql --port=3306 --user=root --password
Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.51b-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
| user_info                 |
+---------------------------+
18 rows in set (0.00 sec)

好的,那你就可以使用mysql了。进入你的 Django local_settings.py 并检查 MySQL 是否设置正确:

DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'whatever'
DATABASE_USER = '<special app user>'
DATABASE_PASSWORD = '<password for user>'
DATABASE_HOST = '<ip address or host name of server>'
DATABASE_PORT = '3306'

如果您从命令行执行所有这些操作,那么这个 Django 设置将起作用。

【讨论】:

【解决方案2】:

我注意到的一件事是你的 settings.py 没有设置端口号,它说它应该是默认的,但 tb 没有提到默认的 mysql 端口是 3306。也在 Windows 上。如果您还没有,您应该验证您的连接参数以及服务器正在运行以及在哪个端口上运行。 tb 说它甚至找不到要尝试连接的服务器。如果您安装了 mysql 客户端,请尝试使用正确的端口连接到它,以验证服务器是否存在。或 telnet 3306 看看是否有回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多