我用RDS创建了一个新的AWS mysql数据库实例,并且试图从我的机器上的Django应用程序连接到它。 Django要求将默认数据库连接的格式设置为settings.py
:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'innodb',
'USER': 'username',
'PASSWORD': 'password',
'HOST': '--------.us-west-2.rds.amazonaws.com',
'PORT': '####'
}
}
我的问题与'NAME'
参数有关。我使用RDS控制台中提供的终端节点和端口号从命令行连接到AWS实例,并检查那里有哪些数据库。这是我使用RDS创建的全新数据库实例,共有5个数据库。
$ mysql -h ---------.us-west-2.rds.amazonaws.com -P #### -u username -p
Enter password:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| innodb |
| mysql |
| performance_schema |
| sys |
+--------------------+
这些数据库中唯一一个为空的数据库称为innodb
。起初我以为NAME
参数应该是'mysql',因为那是我正在使用的数据库服务器的名称。但是,当我使用“ mysql”作为名称并运行python manage.py migrate
时,我收到一条错误消息
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1044, "Access denied for user 'username' to database 'mysql'"))
将NAME
更改为'innodb',使我可以使用migrate
命令连接和写入表。
为什么我需要使用innodb数据库而不是mysql或其他任何数据库?在AWS上创建新的RDS实例时,我没有提到创建5个数据库,也没有提到连接到RDS实例时应该使用的名称。这5个数据库的目的是什么?为什么innodb是唯一一个空且可写的数据库?