Po pierwsze, oto moja obecna konfiguracja:syncdb Django nie działa z MySQL errno: 150
Django: wersja 1.3
MySQL wersja 4.0.18 (nie mój 1st choice ...)
kiedy uruchomić syncdb, pojawia się następujący błąd:
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Traceback (most recent call last):
File "C:\path_to_app\manage.py", line 14, in <module>
execute_manager(settings)
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 438, in execute_manager
utility.execute()
File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 379, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Python27\lib\site-packages\django\core\management\base.py", line 191, in run_from_argv
self.execute(*args, **options.__dict__)
File "C:\Python27\lib\site-packages\django\core\management\base.py", line 220, in execute
output = self.handle(*args, **options)
File "C:\Python27\lib\site-packages\django\core\management\base.py", line 351, in handle
return self.handle_noargs(**options)
File "C:\Python27\lib\site-packages\django\core\management\commands\syncdb.py", line 101, in handle_noargs
cursor.execute(statement)
File "C:\Python27\lib\site-packages\django\db\backends\util.py", line 34, in execute
return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\mysql\base.py", line 86, in execute
return self.cursor.execute(query, args)
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
_mysql_exceptions.OperationalError: (1005, "Can't create table '.\\database_name\\#sql-d64_e75f2.frm' (errno: 150)")
z tego co rozumiem, to ma coś wspólnego z tym, jak InnoDB obsługuje klucze obce. Oto co mój plik ustawienie wygląda następująco:
DATABASES = {
'default': {
....
'OPTIONS': { 'init_command': 'SET table_type=INNODB;', 'charset': 'latin1'},
},
}
Kiedy "SET TABLE_TYPE = InnoDB" nie jest specfied, wszystko działa płynnie. Rozglądałem się po sieci i wygląda na to, że silnik InnoDB nie lubi czegoś o the SQL Django is generating Na razie jedyną pracą, jaką znalazłem, było stworzenie tabel samodzielnie i użycie inspectDB do wygenerowania modeli. ..
Czy jest na to poprawka? Dzięki!
Aby ręcznie tworzyć tabele przy minimalnym nakładzie pracy, skopiuj i edytuj dane wyjściowe programu ['django-admin.py sql'] (https://docs.djangoproject.com/en/dev/ref/django-admin/#sql- appname-appname) lub użyj polecenia ['django-admin.py customql'] (https://docs.djangoproject.com/en/dev/ref/django-admin/#sqlcustom-appname-appname). –