1

我使用以下代码成功地设置了一个简单的PostgreSQL数据库,并且可以SELECTprint预期设置行:

// PG
$hostname = 'localhost';
$dbName = 'pg_test_db';
$username = 'postgres';
$password = 'admin';

$pdo = new PDO("pgsql:host=$hostname;dbname=$dbName", $username, $password);
echo '<pre>';
$stmt = $pdo->prepare("SELECT * FROM test_table");
try {
    $stmt->execute(array());
    while ($row = $stmt->fetch()) {
        print_r($row);
    }
} catch(PDOException $e) {
    echo $e;
}

当我尝试QuestDB使用以下代码对我的测试表执行相同操作时,就会出现我的问题:

// QDB
$dbName = 'qdb';
$hostname = '127.0.0.1';
$password = 'quest';
$port = 8812;
$username = 'admin';

$pdo = new PDO("pgsql:host=$hostname;dbname=$dbName;port=$port", $username, $password);
echo '<pre>';
$stmt = $pdo->prepare("SELECT * FROM test_table");
try {
    $stmt->execute(array());
    while ($row = $stmt->fetch()) {
        print_r($row);
    }
} catch(PDOException $e) {
    echo $e;
}

哪个返回错误数据,包括 1) 错误值;2) 不可读的字符;3)正确的字符串:

Array
(
    [personnel_id] => 0 // this is bugged, it should be returning a value of 1...
    [0] => 0
    [ts] => IXO�` // timestamp is bugged
    [1] => IXO�` 
    [date] => ������X // date is bugged
    [2] => ������X 
    [name] => test_string // this string works fine...
    [3] => test_string
    [value] => 0
    [4] => 0
)

非常奇怪的错误——我没有任何编码问题,plainPostgreSQL或我预先存在的MySQL表(我正在尝试将一些表切换到QuestDB)。

编辑:如果我从更改SELECT *SELECT <single_column>喜欢SELECT date FROM test_table,它工作正常......但如果我在查询中添加更多列,那么字符编码错误会返回。

QuestDB 6.0.2PHP 8.0.2

这个错误也发生在预装的telemetry表格中,所以我认为它与我创建表格的方式无关。

4

0 回答 0