2 Stimmen

Verwendung von Django und MySQL unter Windows

Ich fange gerade an, in Python zu bekommen und beschlossen, das Django-Framework als auch herunterladen, ich habe, dass funktioniert ganz gut, aber dann habe ich versucht, meine erste "Django App" (das Tutorial auf der Django-Website) zu erstellen und wenn ich lief in die "Datenbank-Setup" Ich beginne mit Problemen, die ich mit Windows 7 und ich habe immer mit MySQL in WAMP vor dem Hochladen auf den Server gespielt, so dass ich dachte, ich würde versuchen, dies hier auch, aber ich konnte nicht verbinden es auch nach der Konfiguration der settings.py wie diese:

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.

Ich habe dann heruntergeladen und es geschafft, MySQLdb korrekt zu installieren, so dass ich jetzt python import MySQLdb tun kann, aber ich erhalte diese Meldung und ich weiß wirklich nicht, wie ich das umgehen kann:

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)")

Sollte ich noch etwas konfigurieren oder habe ich mich an irgendeiner Stelle vertan? Ich bin mir auch nicht ganz sicher, ob WAMP an dieser Stelle laufen sollte =S, aber ich habe bei Google nichts finden können, was das Problem ist, mit dem ich konfrontiert bin.

2voto

hughdbrown Punkte 45214

Schauen Sie in dem Verzeichnis nach, in dem Sie MySQL installiert haben, wahrscheinlich so etwas wie C:\Program Files\MySQL\MySQL Server 5.0 . Sehen Sie in der Datei my.ini nach. Prüfen Sie den Abschnitt server. Sie wird in etwa so aussehen:

# 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

Wie lautet die Portnummer, die Sie verwenden? Okay, gehen Sie in die Befehlszeile und führen Sie mysql aus:

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)

Okay, dann können Sie mysql verwenden. Gehen Sie in Ihre Django local_settings.py und überprüfen Sie, ob MySQL korrekt eingerichtet ist:

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'

Wenn Sie all diese Dinge von der Kommandozeile aus gemacht haben, dann wird dieses Django-Setup funktionieren.

0voto

Purrell Punkte 11871

Eine Sache, die ich bemerke, ist, dass Ihre settings.py nicht den Port #, die sagt, es sollte Standard sein, aber die tb erwähnt nicht die Standard-Mysql-Port, die 3306 ist gesetzt. Auch unter Windows. Wenn Sie es nicht schon getan haben, sollten Sie Ihre Verbindungsparameter überprüfen und sicherstellen, dass der Server läuft und auf welchem Port. Die tb sagt, dass sie nicht einmal einen Server findet, mit dem sie eine Verbindung herstellen kann. Wenn Sie den mysql-Client installiert haben, versuchen Sie, sich mit dem richtigen Port zu verbinden, um zu überprüfen, ob der Server vorhanden ist. Oder telnet 3306, um zu sehen, ob Sie eine Antwort erhalten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X