【问题标题】:Google Cloud SQL Insert Not working?谷歌云 SQL 插入不起作用?
【发布时间】:2014-10-14 04:50:43
【问题描述】:

我刚开始使用 Cloud SQL,所以我确定我犯了一个简单的错误。

我可以通过 MySQL Workbench 连接到我的云实例。我创建了一个数据库和一个表,并且能够从 MySQL Workbench 中的这个表中插入和选择。

但是,当我尝试通过我的应用引擎进行连接时,我遇到了错误。

已编辑-这是我的代码:

<?php
try{
    $db = null;
    $db = new pdo('mysql:unix_socket=/cloudsql/my-gae-appname:my-cloud-sql-instance;dbname=myschema', 'root', '');

    mysql_select_db('myschema');

    $action = $_GET["action"];
    $mapid = $_GET["mapid"];
    $src = $_GET["src"];
    $ip = $_SERVER["REMOTE_ADDR"];

    $stmt = $db->prepare('INSERT INTO myschema.report (action, mapid, ip, source) VALUES (?,?,?,?)');
    $stmt->execute(array($action, $mapid, $ip, $src));
    $affected_rows = $stmt->rowCount();

    echo $affected_rows;

    $db = null;

}catch(PDOException $ex){
    echo $ex->getMessage();
  }
?>

我得到的错误是: SQLSTATE[HY000] [1049] 未知数据库 'dpe'

谢谢!

【问题讨论】:

  • 尝试在连接下方的 php error_reporting(E_ALL); ini_set('display_errors', '1'); $db-&gt;setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 上添加错误报告
  • 可能是因为您正在使用mysql_select_db 和 PDO 混合使用 MySQL API。
  • 通常的 PDO 连接语法 $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass); - 根据 php.net/manual/en/pdo.connections.php - 那么,你为什么使用 mysql_select_db('myschema');
  • @Fred-ii- 请参阅我对 Siniseus 回答的回复。

标签: php google-cloud-sql


【解决方案1】:

mysql_select_db();已被弃用,您应该在这种情况下专门使用类对象 PDO。您也可以使用 MYSQLI 类。

try{
$db = null;
$db = new pdo('mysql:unix_socket=/cloudsql/my-gae-appname:my-cloud-sql-instance;dbname=myschema', 'root', '');

$action = $_GET["action"];
$mapid = $_GET["mapid"];
$src = $_GET["src"];
$ip = $_SERVER["REMOTE_ADDR"];

$stmt = $db->prepare('INSERT INTO myschema.report (action, mapid, ip, source) VALUES (?,?,?,?)');
$stmt->execute(array($action, $mapid, $ip, $src));
$affected_rows = $stmt->rowCount();

echo $affected_rows;

$db = null;

}catch(PDOException $ex){
echo $ex->getMessage();
}

【讨论】:

  • 谢谢。现在我得到“SQLSTATE[HY000] [1049] Unknown database 'myschema'”,但是 MySQL Workbench 连接到这个模式没有问题。
  • 抱歉,我拼错了 myschema。
  • 是的,我在测试您的建议时考虑了那个错字。我仍然遇到同样的错误。就好像架构不存在,但 MySQL Workbench 可以毫无问题地连接。
  • 虽然 mysql 工作台正在连接,但它是否选择了架构?数据库是否在模式下的左侧栏中突出显示?
  • 感谢您的建议。我切换到 MySQL Api 而不是 PDO,现在它工作正常。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-03
  • 2020-06-28
  • 2017-11-25
  • 1970-01-01
  • 2014-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多