2014-04-04 96 views
0

我嘗試從AppEngine上連接到谷歌CLOUDSQL,但即時通訊面臨着這樣的錯誤:連接到谷歌CLOUDSQL

No connection could be made because the target machine actively refused it 

我的PHP文件,我已經上傳到AppEngine上:

$sql = new mysqli(null, 
'myuser', // username 
'mypass' 
'mydb', 
null, 
'/cloudsql/**:**' 
); 
if ($mysqli->connect_error) { 
echo 'no'; 
die('Connect Error (' . $mysqli->connect_errno . ') ' 
     . $mysqli->connect_error); 
} 
else { 
echo 'yes\n'; 
} 

的AppEngine上是從雲端sql允許的。 我該怎麼辦?

+0

any?請大家 – Napoleon

+0

什麼是您正在使用的「真正的」套接字,是項目名稱和實例名稱絕對正確,格式爲/ cloudsql/project_id:cloud_sql_instance_name? – IanGSY

+0

你在App Engine上運行時遇到了這個錯誤?由於您無法通過此方式從開發服務器(dev_appserver.py)連接 – IanGSY

回答

2

我一直在嘗試複製您收到的錯誤,但在使用您提供的代碼示例時無法複製它。

而且您的代碼示例有一些錯誤,你創建的$ SQL你的連接,但然後檢查連接錯誤,你應該檢查$ SQL $ mysqli的。所以,我已經改變了$ mysqli的所有出現到$ SQL,你更傳統的方式來檢查連接錯誤檢查connect_errno,然後從connect_error

$sql = new mysqli(null, 
    'your-username', // username 
    'your_password_or_blank_if_using_root', 
    'database_name', 
    null, 
    '/cloudsql/project_id:instance_name' 
); 

if ($sql->connect_errno) { 
    echo 'no'; 
    die('Connect Error (' . $sql->connect_errno . ') '. $sql->connect_error); 
} else { 
    echo 'yes\n'; 
} 
0
    閱讀郵件
  1. 套接字文件實際上是/ CLOUDSQL/PROJECT_ID:區域:INSTANCE_ID(即myproject的-PROD:美國central1:實例1)
  2. 如果你是靈活的虛擬機,你可能想打開調試上一個然後驗證套接字文件確實存在並嘗試連接到它:

    sudo apt-get update sudo apt-get install mysql-client mysql -u your- username -S/cloud/sql/your-socket-file -p