我有一个在 sqlite3 上运行的功能齐全的 satchmo 商店。我需要更改为mysql。无论是创建新数据库还是移植旧数据库,我都会在各种地方收到 http 错误 500。例如,如果我有一个新的数据库,并且我创建了一个用户帐户,一切似乎都很好。如果我随后尝试更新用户的配置文件(实际上是扩展的用户配置文件),我会立即收到服务器 500 错误。就像它不再对该 URL 感兴趣 (http://127.0.0.1:8000/accounts/update/)
奇怪的是,如果我以管理员身份登录并转到管理页面,那么我可以毫无问题地更新该用户的(扩展)个人资料。事实上,我从未在管理页面上看到任何错误。
这是我为mysql设置它的方法:
apt-get install mysql-client
apt-get install mysql-server
apt-get install python-mysqldb
mysql -u root -p
mysql> USE mysql;
mysql> CREATE DATABASE mystore CHARACTER SET utf8;
mysql> GRANT ALL PRIVILEGES ON mystore.* TO storeuser@localhost IDENTIFIED BY 'secret';
mysql> FLUSH PRIVILEGES;
设置.py:
DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'mystore'
DATABASE_USER = 'storeuser'
DATABASE_PASSWORD = 'secret'
DATABASE_HOST = ''
DATABASE_PORT = ''
DATABASE_OPTIONS = { "init_command": 'SET NAMES "utf8"' , "init_command":'SET storage_engine=INNODB' , }
然后创建一个新的数据库,我只是这样做了:
python manage.py syncdb
python manage.py runserver
编辑 1
这是它爆炸的代码:
class myExtendedContactInfoForm(ExtendedContactInfoForm):
def __init__(self, *args, **kwargs):
# The following line is where it produces the error
super(myExtendedContactInfoForm, self).__init__(*args, **kwargs)
编辑 2
似乎数据库中缺少一些东西,因为如果我回到使用 sqlite 后端,然后删除 sqlite db(然后运行'python manage.py syncdb'),我会得到完全相同的症状。似乎我需要做的不仅仅是syncdb。
我在这里想念什么?