简体   繁体   English

使用CloudSQL的Google AppEngine上的Django:如何连接数据库(错误2002,无法连接到本地MySQL服务器..)

[英]Django on Google AppEngine with CloudSQL: How to connect database (Error 2002, Can't connect to local MySQL server..)

I'm trying to start a Django app to be hosted on GAE, using CloudSQL. 我正在尝试使用CloudSQL启动一个在GAE上托管的Django应用程序。 Locally, I'm on Mac OSX Maverics, working within a virtualenv (via virtualenvwrapper). 在本地,我在Mac OSX Maverics上工作,在virtualenv(通过virtualenvwrapper)工作。

After installing the GAE SDK for Python, I started my virtual environment, installed Django 1.5 from /usr/local/google_appengine/lib/django-1.5/ 安装GAE SDK for Python后,我启动了我的虚拟环境,从/usr/local/google_appengine/lib/django-1.5/安装了Django 1.5

Also, on appengine.google.com I created a new app, and connected a CloudSQL instance to it (enable billing). 此外,在appengine.google.com上,我创建了一个新应用,并将CloudSQL实例连接到它(启用结算)。

I'm able to create a new Django project, eg django-admin.py startproject test01 , then I edit its settings.py to change the DATABASES definition per Google's instructions, eg: 我能够创建一个新的Django项目,例如django-admin.py startproject test01 ,然后我编辑其settings.py以根据Google的指令更改DATABASES定义,例如:

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.mysql',
      'HOST': '/cloudsql/myapp-test01:myapp-db-test01',
      'NAME': 'test01',
      'USER': 'test01',
}

} }

I also added app.yaml to the root of the project folder, per Google's docs: 我还根据Google的文档将app.yaml添加到项目文件夹的根目录中:

application: test01
version: 1
runtime: python27
api_version: 1
threadsafe: true

libraries:
- name: django
  version: "1.5"

builtins:
- django_wsgi: on

This is where I hit roadblocks. 这是我遇到障碍的地方。

First: What exactly should be entered into the DATABASES for NAME and USER fields? 第一:究竟应该在NAME和USER字段的DATABASES中输入什么? The docs do not go into any detail. 文档没有详细说明。

Second, when I run: python manage.py syncdb to initialize the app, I get: 第二,当我运行: python manage.py syncdb来初始化应用程序时,我得到:

OperationalError: (2002, "Can't connect to local MySQL server through socket '/cloudsql/desgn-test-01:db-test-01' (2)") 

I do have MySQL installed, via brew install mysql (although I didn't do that inside the virtual environment), and I also have MySQL-python. 我确实安装了MySQL,通过brew install mysql (虽然我没有在虚拟环境中这样做),而且我也有MySQL-python。

I'm new to GAE and fairly inexperienced with setting up databases, so I'm not sure what do try next. 我是GAE的新手,并且在设置数据库方面缺乏经验,所以我不确定下一步该尝试什么。 I'm not sure if the issue is with my local MySQL, or the CloudSQL connection settings? 我不确定问题是我的本地MySQL还是CloudSQL连接设置?

(A more general Django on GAE question: What is the workflow exactly? If I get the connection to work, does it mean that I am using CloudSQL even when developing my Django app locally? How do I subsequently "push" the app to the AppEngine, or make updates? I'm assuming this is done with the Launcher but what is the correlation between creating (adding) an app using the appengine.google.com dashboard, versus adding a new app in the local launcher? Quite confused by this -- are these two one and the same app, need to have identical names, or..?) (关于GAE问题的更一般的Django:工作流程究竟是什么?如果我得到连接工作,是否意味着即使在本地开发我的Django应用程序时我也在使用CloudSQL?我如何随后将应用程序“推送”到AppEngine,还是进行更新?我假设这是使用Launcher完成的,但使用appengine.google.com仪表板创建(添加)应用程序与在本地启动器中添加新应用程序之间的相关性是什么?相当困惑的是这个 - 这两个是同一个app,需要有相同的名字,还是..?)

Looks like at the time, you were missing the password field as well... 看起来当时,你也错过了密码字段......

    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test01',
        'USER': 'test01',
        'PASSWORD': '[password]',
        'HOST': '/cloudsql/myapp-test01:myapp-db-test01',
        'PORT': '3306',
    }

Using the GUI for Cloud SQL, you can always add new Super Admin level users to the Cloud SQL instance in case you're unsure what user to use as well. 使用GUI for Cloud SQL,您可以随时向Cloud SQL实例添加新的超级管理员级别用户,以防您不确定要使用哪个用户。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Dockerize Django + mySql app: (2002, "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)") 错误 - Dockerize Django + mySql app: (2002, "Can't connect to local MySQL server through socket '/run/mysqld/mysqld.sock' (2)") error Raspberry Pi crontab在启动时启动py脚本->日志记录:错误mysql 2002(无法连接到本地服务器) - Raspberry Pi crontab starts py script at bootup -> logging: error mysql 2002 (can't connect to local server) (2002,“无法通过socket连接到本地MySQL服务器'/var/lib/mysql/mysql.sock'(2)”) - (2002, “Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)”) (2002,“无法通过套接字'/tmp/mysql.sock'(2)连接到本地MySQL服务器”) - (2002, “Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)”) (2002,“无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)”) - (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)") OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)") - OperationalError: (2002, "Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)") django.db.utils.OperationalError:(2002,“无法连接到'db'(115)上的 MySQL 服务器”) - django.db.utils.OperationalError: (2002, “Can't connect to MySQL server on 'db' (115)”) 缺少 mysql.sock; 产生操作错误:(2002,“无法通过套接字连接到本地 MySQL 服务器‘/tmp/mysql.sock’(2)”) - Missing mysql.sock; yielding OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)") 无法通过套接字连接到本地 MySQL 服务器\'/cloudsql/my_project:us-central1:my_instance\' - Can't connect to local MySQL server through socket \'/cloudsql/my_project:us-central1:my_instance\' 将Django 1.5.4连接到Mamp MySQL - 无法连接到本地服务器 - Connecting Django 1.5.4 to Mamp MySQL - Can't connect to local server
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM