Django初始数据库迁移操作,安装pymysql.

给Django配置mysql数据库

现在settings中将DATABASES重新设置

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': "databasename",
'PASSWORD': "password",
'USER':"rusername",
'HOST': "localhost",
'PORT': 3306,

'OPTIONS': { "init_command": "SET default_storage_engine='INNODB'"

} #设定mysql数据库的初始引擎,也可以加入其他字段,如 chaeset等
}
}

执行python manage.py makemigrations时,报错:

'Did you install mysqlclient or MySQL-python?' % e
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
Did you install mysqlclient or MySQL-python?

经过上网搜索得知,MySQLdb并不支持Python3.5,因此只能找别的类库代替。

解决方法:

使用pymysql代替MySQLdb,因为两者的用法完全一致,步骤:

1. PIP install pymysql

2. 执行成功后,打开__init__.py,添加如下:

import pymysql
pymysql.install_as_MySQLdb()

3. 重新执行python manage.py makemigrations,成功。

 

实际上按照给出的提示是要安装mysqlclient的,但是在pip下安装会报错,要去下载执行文件,我比较懒,就换一个方式吧.后面如果出错,再来更新,嘿嘿嘿.

接着执行python3 mange.py migrate,报错如下:

WARNINGS:
?: (mysql.W002) MySQL Strict Mode is not set for database connection 'default'
    HINT: MySQL's Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it.

说明当前使用的mysql数据库不是严格模式.严格模式下:

1.不支持对not null字段插入null值

2.不支持对自增长字段插入""值

3.不支持text字段有默认值

需要进行数据库的改动,以防止bug出现.

在settings中,数据库设置下面插入:

DATABASES['default']['OPTIONS']['init_command'] = "SET sql_mode='STRICT_TRANS_TABLES'"

猜你喜欢

转载自www.cnblogs.com/xiujin/p/9693794.html