django 支持 MySQL 5.5及以上版本。
Django的inspectdb功能使用information_schema, 其中包含所有的数据库schema的详细数据。
Django期望数据库支持Unicode(UTF-8编码)。
直到MySQL5.5.4为止,MySQL的默认引擎都是MyISAM。MyISAM的主要缺点是不支持事务(transactions)或者强制性的外键限制。另一方面,直到MySQL5.6.4,MyISAM是唯一支持全表索引和查找的。
MySQL5.5.5时,默认存储引擎换成了InnoDB.它是支持事务和外键的。在这一点上,它可能是最好的。但是,InnoDB会在mysql
重启之后丢失AUTO_INCREMENT
值,而不是重新创建一个max(id)+1
。这可能会导致AutoField
的值的误用。
如果将现有的project升级至MySQL5.5.5,随后添加一些表,确保你的表使用相同的存储引擎(i.e. MyISAM vs InnoDB)。特别的是:如果几个表有一个ForeignKey,而它们之间用的是不同的存储引擎,那么就会报个下面的错务:
_mysql_exceptions.OperationalError: (
1005, "Can't create table '\\db_name\\.#sql-4a8_ab' (errno: 150)"
)
MySQL DB API Drivers
- MySQLdb
- mysqlclient
- MySQL Connector/Python
目前只有MySQLdb支持Python3(2016.01.21)