sql >> データベース >  >> Database Tools >> phpMyAdmin

MySQLサーバーの解決でエラーがなくなりました

    クエリの前にmysqlサーバーに「ping」を実行することで、この問題を処理する傾向がある場合があります。これは悪い考えです。理由の詳細については、次のSO投稿を確認してください:各クエリの前にmysqlサーバーにpingを実行する必要がありますか?

    この問題を処理する最善の方法は、クエリをtry/catch内にラップすることです。 データベースの例外をブロックしてキャッチし、それらを適切に処理できるようにします。これは、長時間実行されるスクリプトやデーモンタイプのスクリプトで特に重要です。したがって、「接続マネージャー」を使用してDB接続へのアクセスを制御する非常に基本的な例を次に示します。

    class DbPool {
    
        private $connections = array();
    
        function addConnection($id, $dsn) {
            $this->connections[$id] = array(
                'dsn' => $dsn,
                'conn' => null
            );
        }
    
        function getConnection($id) {
            if (!isset($this->connections[$id])) {
                throw new Exception('Invalid DB connection requested');
            } elseif (isset($this->connections[$id]['conn'])) {
                return $this->connections[$id]['conn'];
            } else {
                try {
                    // for mysql you need to supply user/pass as well
                    $conn = new PDO($dsn);
    
                    // Tell PDO to throw an exception on error
                    // (like "MySQL server has gone away")
                    $conn->setAttribute(
                        PDO::ATTR_ERRMODE,
                        PDO::ERRMODE_EXCEPTION
                    );
                    $this->connections[$id]['conn'] = $conn;
    
                    return $conn;
                } catch (PDOException $e) {
                    return false;
                }
            }
        }
    
        function close($id) {
            if (!isset($this->connections[$id])) {
                throw new Exception('Invalid DB connection requested');
            }
            $this->connections[$id]['conn'] = null;
        }
    
    
    }
    
    
    class Crawler {
    
        private $dbPool;
    
        function __construct(DbPool $dbPool) {
            $this->dbPool = $dbPool;
        }
    
        function crawl() {
            // craw and store data in $crawledData variable
            $this->save($crawledData);
        }
    
        function saveData($crawledData) {
            if (!$conn = $this->dbPool->getConnection('write_conn') {
                // doh! couldn't retrieve DB connection ... handle it
            } else {
                try {
                    // perform query on the $conn database connection
                } catch (Exception $e) {
                    $msg = $e->getMessage();
                    if (strstr($msg, 'MySQL server has gone away') {
                        $this->dbPool->close('write_conn');
                        $this->saveData($val);
                    } else {
                        // some other error occurred
                    }
                }
            }
        }
    }
    


    1. phpMyAdminを使用してMySQLリモートおよびローカルデータベースを同期します

    2. Unicodeからutf8phpmyadminへのcsvインポート

    3. LIMITを使用するとphpMyAdminがハングする

    4. データベースを削除せずに、phpMyAdminのデータベース内のすべてのテーブルの内容を削除するにはどうすればよいですか?