当前位置: 首页 > 知识库问答 >
问题:

Datastax Cassandra PHP驱动程序

穆宾白
2023-03-14

我正在使用php的Datastax Cassandra驱动程序,希望能够检查是否查询失败,在数据库中没有找到结果。现在,如果查询失败,日志报告如下

PHP Fatal error:  Uncaught exception 'Cassandra\\Exception\\RuntimeException' with message 'No hosts available for the control connection' in /var/www/html/includes/conditions.php:153\nStack trace:\n#0 /var/www/html/includes/conditions.php(153): Cassandra\\DefaultCluster->connect('loop_non_hadoop')\n#1 /var/www/html/index.php(159): check_key('0x851702c16d824...')\n#2 {main}\n  thrown in /var/www/html/includes/conditions.php on line 153, referer: http://172.29.195.10:5050/html/index.php

如果查询成功,它将返回预期的数据。下面是函数

function check_key($key){
    $cluster = Cassandra::cluster()->build();
    //set this to the appropriate keyspace
    $keyspace = 'loop_non_hadoop'; 
    $session = $cluster->connect($keyspace);
    $query = "SELECT * FROM events WHERE key=$key";
    $statement = new Cassandra\SimpleStatement($query);

    $results = $session->execute($statement);

    if(empty($results)){
        return;
    }
    else {
        foreach ($results as $row) {
            echo "<tr id='cell'><td>Title</td><td>" . $row['title'] . "</td></tr>";
            echo "<tr><td>Location</td><td>" . $row['locationName'] . "</td></tr>";
            echo "<tr id='cell'><td>City</td><td>" . $row['city'] . "</td></tr>";
            echo "<tr><td>State</td><td>" . $row['state'] . "</td></tr>";
            echo "<tr id='cell'><td>Zip</td><td>" . $row['zipcode'] . "</td></tr>";
            echo "<tr><td>Address</td><td>" . $row['street'] . "</td></tr>";
            echo "<tr id='cell'><td>Description</td><td>" . $row['summary'] . "</td></tr>";
            echo "<tr><td>Url</td><td>" . $row['url'] . "</td></tr>";
            echo "<tr id='cell'><td>Start</td><td>" . $row['start'] . "</td></tr>";
            echo "<tr><td>End</td><td>" . $row['end'] . "</td></tr>";
        }
        return true;
    }
}   

根据发布的建议,我最后做了以下几点

function check_key($key){
    try{
        $cluster = Cassandra::cluster()->build();
        //set this to the appropriate keyspace
        $keyspace = 'loop_non_hadoop'; 
        $session = $cluster->connect($keyspace);
        $query = "SELECT * FROM events WHERE key=$key";
        $statement = new Cassandra\SimpleStatement($query);

        $results = $session->execute($statement);

        foreach ($results as $row) {
            echo "<tr id='cell'><td>Title</td><td>" . $row['title'] . "</td></tr>";
            echo "<tr><td>Location</td><td>" . $row['locationName'] . "</td></tr>";
            echo "<tr id='cell'><td>City</td><td>" . $row['city'] . "</td></tr>";
            echo "<tr><td>State</td><td>" . $row['state'] . "</td></tr>";
            echo "<tr id='cell'><td>Zip</td><td>" . $row['zipcode'] . "</td></tr>";
            echo "<tr><td>Address</td><td>" . $row['street'] . "</td></tr>";
            echo "<tr id='cell'><td>Description</td><td>" . $row['summary'] . "</td></tr>";
            echo "<tr><td>Url</td><td>" . $row['url'] . "</td></tr>";
            echo "<tr id='cell'><td>Start</td><td>" . $row['start'] . "</td></tr>";
            echo "<tr><td>End</td><td>" . $row['end'] . "</td></tr>";
        }
        return true;
    }
    catch(Exception $e){
        //Casandra error
        var_dump($e->getMessage());
    }
    finally {
        return;
    }
}

谢谢你的建议

共有1个答案

澹台建华
2023-03-14

使用try catch:

function check_key($key){
    try{
        $cluster = Cassandra::cluster()->build();
        //set this to the appropriate keyspace
        $keyspace = 'loop_non_hadoop'; 
        $session = $cluster->connect($keyspace);
        $query = "SELECT * FROM events WHERE key=$key";
        $statement = new Cassandra\SimpleStatement($query);

        $results = $session->execute($statement);

        if(empty($results)){
            return;
        }
        else {
            foreach ($results as $row) {
                echo "<tr id='cell'><td>Title</td><td>" . $row['title'] . "</td></tr>";
                echo "<tr><td>Location</td><td>" . $row['locationName'] . "</td></tr>";
                echo "<tr id='cell'><td>City</td><td>" . $row['city'] . "</td></tr>";
                echo "<tr><td>State</td><td>" . $row['state'] . "</td></tr>";
                echo "<tr id='cell'><td>Zip</td><td>" . $row['zipcode'] . "</td></tr>";
                echo "<tr><td>Address</td><td>" . $row['street'] . "</td></tr>";
                echo "<tr id='cell'><td>Description</td><td>" . $row['summary'] . "</td></tr>";
                echo "<tr><td>Url</td><td>" . $row['url'] . "</td></tr>";
                echo "<tr id='cell'><td>Start</td><td>" . $row['start'] . "</td></tr>";
                echo "<tr><td>End</td><td>" . $row['end'] . "</td></tr>";
            }
            return true;
        }
    }catch(\Exception $e){
        //Casandra error
        var_dump($e->getMessage());
    }
} 
 类似资料:
  • 我试图通过网络驱动程序在“http://www.kayak.co.in/?ispredir=true”中选择入住和退房时间。无法选择任何日期。请帮帮我。

  • 对于ex,当我的chrome放在Compand提示符中时,会给出路径-/applications/google\chrome.app system.setproperty(“webdriver.chrome.driver”,“/applications/google/chrome.app”);WebDriver driver=new ChromeDriver(); driver.get(“http

  • 我正在处理Spring Boot项目,突然遇到应用程序无法加载MySQL jdbc的问题。(我编译了一次这个项目,没有改变任何东西) 这是我的pom.xml: 这是我的application.properties: Logcat: MySQL数据库最初是使用hibernate创建的。这些配置工作正常,但我不确定这里的真正问题是什么 编辑:我删除了。m2文件夹并从一开始安装所有依赖项。

  • 1.1.1. 目录 1.1.2. HTTP 远程驱动(旧版协议) 1.1.1. 目录 HTTP 远程驱动(旧版协议) 通用格式 标准接口 1.1.2. HTTP 远程驱动(旧版协议) HTTP 远程驱动是接入 Homebase 推荐的方式,云对云驱动也使用此协议。 你可以通过 开发者驱动, 或 rhome 命令 来开发和调试 HTTP Driver 开发一个 HTTP 远程驱动你可能需要以下 3

  • 在Eclipse BIRT数据资源管理器中为查询生成器添加JDBC数据库连接: 选择“查询生成器的JDBC数据库连接” 就这样。我可以使用此数据源来使用数据集。 下一个。 我希望使用更灵活的“JDBC数据源”,而不是以前成功使用的“查询生成器的JDBC数据库连接”。哦,我看到MySQL没有驱动程序类-Derby和Sample只有两个默认条目。 似乎JDBC驱动程序的有效注册没有添加(或注册?)司机

  • 我无法运行脚本,并显示消息:驱动程序信息:驱动程序。.

  • 问题内容: 我正在尝试运行一个ruby文件,该文件将使用seleniumwebdriver启动chrome驱动程序。我有selenium独立服务器2.35.0。和chromedriver可执行文件已安装。我正在通过运行服务器来启动 两个会话正在启动,chrome驱动程序无法启动。 这是在我使用以下文件运行文件之后 我对此并不陌生,无法找出问题所在。而且,我也试图让它无头运行,所以我正在运行Xvfb

  • 我正试图在eclipse中运行我的第一个webdriver脚本。使用jre1。8.0_1111. 我使用了下面的代码,但它显示了错误。请帮我查一下密码。 错误堆栈 线程“main”java中出现异常。lang.IllegalStateException:驱动程序可执行文件的路径必须由webdriver设置。壁虎。驱动系统属性;有关更多信息,请参阅github。com/mozilla/geckodr