无法连接 Google App Engine 和 Google Cloud SQL
Unable to Connect Google App Engine and Google Cloud SQL
我一直在尝试连接到 Google App Engine
中的示例 PHP hello world 应用程序 运行 到 Google Cloud SQL.
我正在尝试测试示例数据库连接。使用像 Navicat
这样的外部客户端我可以获得访问权限,但是,将应用程序直接连接到云 sql 是行不通的。
我已经审查了许多 Whosebug 类似的问题,并彻底研究了 google 提供的示例,但没有成功。
在这里您可以看到 hello world 文件,其中包含三种不同尝试连接到 sql 数据库的输出,我也在回应每个对象的 json
...返回为空或 null。
https://beaming-glyph-107521.appspot.com/
我不确定在这里还能做什么
我的 Google 应用程序可以访问云 SQL 实例:
我现在我的用户 sql 用户是 root 用户,密码为空,但我也尝试过使用已定义密码的用户 - 仍然没有成功。
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
echo 'Hello, world!';
//Copied and Pasted straight from the provided connection strings in Cloud SQL
// Using PDO_MySQL (connecting from App Engine)
$db = new pdo('mysql:unix_socket=/cloudsql/beaming-glyph-107521:testdb',
'root', // username
'' // password
);
// Using mysqli (connecting from App Engine)
$sql = new mysqli(
null, // host
'root', // username
'', // password
'', // database name
null,
'/cloudsql/beaming-glyph-107521:testdb'
);
// Using MySQL API (connecting from App Engine)
$conn = mysql_connect(':/cloudsql/beaming-glyph-107521:testdb',
'root', // username
'' // password
);
echo "<br><br/>pdo connection: ".json_encode($db);
echo'<br><br/> msqli connection: '.json_encode($sql);
echo '<br><br/> mysql conn: '.json_encode($conn);
问题在于使用 jsonencode() 显示 db 对象。无论出于何种原因,它显示为空白,而实际上它确实存在。经过几个小时的调查,我能够 运行 查询并在创建 db 对象后立即显示结果。
所以总而言之,看起来我一直都在联系。如果您正在尝试调试数据库连接,请尝试 运行 测试查询并在创建数据库对象以测试连接后立即显示结果。
$db = new pdo('mysql:unix_socket=/cloudsql/table-1075:testdb;dbname=sampledb',
'root', // username
'' // password
);
var_dump($db);
$sql='SELECT * FROM table';
foreach ($db->query($sql) as $row) {
print $row['Index'] . "\t";
}
我一直在尝试连接到 Google App Engine
中的示例 PHP hello world 应用程序 运行 到 Google Cloud SQL.
我正在尝试测试示例数据库连接。使用像 Navicat
这样的外部客户端我可以获得访问权限,但是,将应用程序直接连接到云 sql 是行不通的。
我已经审查了许多 Whosebug 类似的问题,并彻底研究了 google 提供的示例,但没有成功。
在这里您可以看到 hello world 文件,其中包含三种不同尝试连接到 sql 数据库的输出,我也在回应每个对象的 json
...返回为空或 null。
https://beaming-glyph-107521.appspot.com/
我不确定在这里还能做什么
我的 Google 应用程序可以访问云 SQL 实例:
我现在我的用户 sql 用户是 root 用户,密码为空,但我也尝试过使用已定义密码的用户 - 仍然没有成功。
<?php
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(-1);
echo 'Hello, world!';
//Copied and Pasted straight from the provided connection strings in Cloud SQL
// Using PDO_MySQL (connecting from App Engine)
$db = new pdo('mysql:unix_socket=/cloudsql/beaming-glyph-107521:testdb',
'root', // username
'' // password
);
// Using mysqli (connecting from App Engine)
$sql = new mysqli(
null, // host
'root', // username
'', // password
'', // database name
null,
'/cloudsql/beaming-glyph-107521:testdb'
);
// Using MySQL API (connecting from App Engine)
$conn = mysql_connect(':/cloudsql/beaming-glyph-107521:testdb',
'root', // username
'' // password
);
echo "<br><br/>pdo connection: ".json_encode($db);
echo'<br><br/> msqli connection: '.json_encode($sql);
echo '<br><br/> mysql conn: '.json_encode($conn);
问题在于使用 jsonencode() 显示 db 对象。无论出于何种原因,它显示为空白,而实际上它确实存在。经过几个小时的调查,我能够 运行 查询并在创建 db 对象后立即显示结果。
所以总而言之,看起来我一直都在联系。如果您正在尝试调试数据库连接,请尝试 运行 测试查询并在创建数据库对象以测试连接后立即显示结果。
$db = new pdo('mysql:unix_socket=/cloudsql/table-1075:testdb;dbname=sampledb',
'root', // username
'' // password
);
var_dump($db);
$sql='SELECT * FROM table';
foreach ($db->query($sql) as $row) {
print $row['Index'] . "\t";
}