我在Google App Engine应用程序上有一个Django应用程序,它使用App Engine身份验证连接到Google Cloud SQL .
大多数情况下一切正常,但有时会引发以下异常:
OperationalError: (2013, "Lost connection to MySQL server at 'reading initial communication packet', system error: 38")
Run Code Online (Sandbox Code Playgroud)
根据文档,在以下情况下返回此错误:
例如,如果Google Cloud SQL拒绝连接,则因为客户端连接的IP地址未经授权.
在我的情况下这没有多大意义,因为身份验证是由App Engine服务器完成的.
什么可能导致这些零星的错误?
我已经能够在开发人员控制台中成功创建Google容器群集,并将我的应用程序部署到它.这一切都很好,但我发现我无法连接到Cloud SQL,我得到;
"Error: Handshake inactivity timeout"
Run Code Online (Sandbox Code Playgroud)
经过一番挖掘,我从App Engine或本地机器连接到数据库时没有遇到任何问题,所以我觉得这有点奇怪.那时我注意到集群权限......
当我选择我的群集时,我看到以下内容;
Permissions
User info Disabled
Compute Read Write
Storage Read Only
Task queue Disabled
BigQuery Disabled
Cloud SQL Disabled
Cloud Datastore Disabled
Cloud Logging Write Only
Cloud Platform Disabled
Run Code Online (Sandbox Code Playgroud)
我真的希望在我的容器引擎节点中同时使用云存储和云端SQL.我允许在我的项目设置中访问每个API,我的Cloud SQL实例正在接受来自任何IP的连接(我之前在App Engine上的托管虚拟机中运行过Node),所以我的想法是Google明确禁用这些API.
所以我的两部分问题是;
任何帮助非常感谢!
node.js google-cloud-storage google-cloud-sql google-cloud-platform google-kubernetes-engine
目前,我已经在谷歌应用引擎上部署了我的django项目.我需要运行python manage.py migrate命令,以便auth_user在我的google云实例上创建表.但是不知道在哪里运行这个命令.
当我用kubernetes运行图像时,我正在创建一个连接到cloudql数据库的容器.它没有可用于允许新映像连接到数据库的外部IP.但由于这是init配置的一部分,我迫不及待想知道要添加到白名单数据库的公共IP是什么.
我知道这是通过同一群集中的服务连接数据库的方法,但我无法弄清楚如何连接谷歌提供的cloudsql.
我在 GCP 上有一个 cloud-sql postgres11 实例,并使用 pg_repack cron 来清理我的数据库。我注意到自从上次维护(3 月 21 日 7 日)以来,我无法执行重新打包。当尝试手动运行重新打包时,我遇到了以下错误消息:
错误:pg_repack 失败,错误:程序“pg_repack 1.4.4”与数据库库“pg_repack 1.4.6”不匹配
做了以下检查:
List of installed extensions
Name | Version | Schema | Description
--------------------+---------+------------+--------------------------------------------------------------
pg_repack | 1.4.4 | public | Reorganize tables in PostgreSQL databases with minimal locks
pg_stat_statements | 1.6 | public | track execution statistics of all SQL statements executed
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
(3 rows)
Run Code Online (Sandbox Code Playgroud)
name | version | installed …Run Code Online (Sandbox Code Playgroud) postgresql maintenance google-cloud-sql google-cloud-platform pg-repack
我正在使用带有appengine的谷歌云sql.
com.google.apphosting.api.ApiProxy$RequestTooLargeException: The request to API call datastore_v3.Put() was too large.尽管我没有使用Datasotre API ,但我得到了.
我认为根据文档https://developers.google.com/appengine/docs/java/cloud-sql/developers-guide#access_limits,数据大小限制是在60秒内提供16MB.
我的数据大小约为1 MB,我的响应肯定不到1分钟.如果我尝试使用较小的数据,一切正常.
那么,为什么会抛出异常呢?问题是什么 ?这是谷歌应用引擎中的错误吗?或者是否有尺寸限制,在哪里记录?或者是什么 ?
(注意:是的,围绕这个主题有一些重复的问题.但是,那些在点上的问题已经存在几年......当Google App Engine仅支持JPA 1.0和专有的NoSQL数据存储时.现在访问,支持更现代的JPA标准和MySQL.)
我正在使用JPA作为持久性框架在Google App Engine Java项目中试验Cloud SQL.关于在Cloud SQL中使用连接池,Google的常见问题解答有点矛盾......如果创建新连接的成本超过检查和重用现有连接的成本,那么这可能是值得的.
我预计我的应用程序将迅速发布大量非常短暂的数据库操作,因此它似乎适合连接池的用例.此外,我是**FAR**更担心由于配额上限而拒绝我的连接,而不是我在一个等待连接池释放的请求阻止几秒钟.根据以前使用Google App Engine运行时配额的经验,我甚至不认为Cloud SQL是没有连接池的可行服务.
问题是JPA通常通过JNDI连接到连接池,而Google App Engine不支持JNDI.那么人们如何使用与Google App Engine和Cloud SQL的连接池?有没有办法以编程方式将连接池连接到JPA EntityManagerFactory,而没有JNDI?或者您是否必须放弃JPA,并使用手动JDBC或其他一些持久性框架(例如JDO)编写持久层?
在重要的程度上,我目前正在尝试使用EclipseLink作为JPA提供程序,使用Tomcat DBCP作为连接池(我在其他StackOverflow问题中已经看到Tomcat DBCP与App Engine的线程限制一起使用).我愿意探索其他提供者或持久性机制(例如本机Hibernate,JDO等)......但我更愿意坚持使用JPA标准,并且如果它需要纯手工JDBC来处理连接,那么它可能会完全传递Cloud SQL池.
我们正在使用Google Cloud Sql Second Generation和我们的AppEngine应用程序.但是今天我们发现了一些问题,我们无法在我们的数据库中插入表情符号字符,因为我们无法将某些服务器标志更改为utf8mb4字符编码.
我们已经将character_set_server标志更改为utf8mb4,但它还不够
我们必须更改:character_set_system character_set_client collaction_connection
标志到utf8mb4,但第二代数据库不允许root用户更改这些标志.我们可以做些什么来解决这个问题
有没有人对此有任何想法?
谢谢
我一直在尝试过去2天从appengine连接到cloudql,我能够通过IP从linux webserver连接,但是无法从具有相同设置的app引擎连接.
我的连接字符串如下:请注意实际的appid被替换以及dbname
在app.yaml
env_variables:
MYSQL_DSN: mysql:unix_socket=/cloudsql/appid:us-central1:sql-instance-1;dbname=dbname
MYSQL_USER: root
MYSQL_PASSWORD: ''
Run Code Online (Sandbox Code Playgroud)
在phpfile中
$dsn = getenv('MYSQL_DSN');
$user = getenv('MYSQL_USER');
$password = getenv('MYSQL_PASSWORD');
if (!isset($dsn, $user) || false === $password) {
throw new Exception('Set MYSQL_DSN, MYSQL_USER, and MYSQL_PASSWORD environment variables');
}
$conn = new PDO($dsn, $user, $password);
Run Code Online (Sandbox Code Playgroud)
以上内容来自https://cloud.google.com/appengine/docs/standard/php/cloud-sql/ 我尝试过使用密码,而不是使用密码.我尝试过用户名root,作为用户名,密码和用户名没有.
我正在使用第二代设置和flex php环境,我一直收到的错误如下:
短暂的错误
SQLSTATE[HY000] [2002] No such file or directory
Run Code Online (Sandbox Code Playgroud)
完全错误
Fatal error: Uncaught PDOException: SQLSTATE[HY000] [2002] No such file or directory in /app/dbconn.php:12 Stack trace: #0 /app/dbconn.php(12): PDO->__construct('mysql:unix_sock...', 'root', '') #1 …Run Code Online (Sandbox Code Playgroud) 我正在使用Rails并且非常随机地遇到连接池错误,并且它没有专门针对任何单个端点.我可以在70%的时间内点击端点而不会出现此错误.该数据库是在Google Cloud上运行的PostgreSQL.这是我得到的错误的主要内容:
#<ActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished>
/usr/local/bundle/gems/activerecord-5.1.5/lib/active_record/connection_handling.rb:112:in `connection_pool'
ActiveRecord::ConnectionNotEstablished (No connection pool with 'primary' found.):
Run Code Online (Sandbox Code Playgroud)
的Gemfile:
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
gem 'rails', '~> 5.1.5'
gem 'pg', '>= 0.18', '< 2.0'
gem 'puma', '~> 3.7'
gem 'bcrypt', '~> 3.1.7'
gem 'jwt', '~> 1.5'
gem 'simple_command', '~> 0.0.9'
gem 'swagger-blocks', '~> 2.0.2'
gem 'active_model_serializers', '~> 0.10.2'
gem 'kaminari'
gem 'google-cloud-storage', '~> 1.10.0'
gem 'mini_magick', '~> 4.8.0'
gem 'carrierwave', '~> 1.2.0'
gem 'fog-google', '~> 1.3.0'
gem 'geocoder', …Run Code Online (Sandbox Code Playgroud) ruby postgresql ruby-on-rails google-cloud-sql cloud-sql-proxy
google-cloud-sql ×10
django ×2
java ×2
mysql ×2
postgresql ×2
python ×2
jpa ×1
kubernetes ×1
maintenance ×1
node.js ×1
pg-repack ×1
php ×1
ruby ×1
utf8mb4 ×1