无法从php脚本

时间:2016-07-08 17:41:24

标签: php mysql database

我有一个访问远程MySQL数据库的脚本。这个数据库有多个表,超过40亿(是的,我的意思是十亿)记录。

今天我创建了一个包含大约630万条记录的新表。当我通过Sequel Pro访问数据库,更具体地来说是新表时,我能够进行查询并从数据库中的任何表中获取数据而不会出现任何问题,这包括访问我刚创建的新表。

问题是:当我通过PHP使用相同的用户凭据访问同一个数据库时,我无法访问刚创建的新表。我能够访问数据库中每个其他表中的数据,但不能访问我创建的新表。

以下是我尝试的内容:
我首先尝试通过PDO进行连接和查询。如果那不起作用,我尝试使用mysqli建立连接和查询。这两种方法都不奏效。为了确保我的脚本中没有遗漏某些内容,我创建了下面的脚本,该脚本获取数据库中每个表的列表,然后访问每个表,获取2条记录,并将它们输出到屏幕:

 try {
    $db = new PDO('mysql:host=IP_ADDRESS;port=PORT_NUMBER;dbname=DB_NAME', 'DB_USER', 'DB_PASSWORD', [
        PDO::ATTR_PERSISTENT => true
     ]);
 } catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
 }

 $query = $db->query('SHOW TABLES');
 $results = $query->fetchAll(PDO::FETCH_COLUMN);

 foreach ($results as $r) {
    echo '<br><br>' . $r . '<br>';
    $res = $db->query("SELECT * FROM `" . $r . "` LIMIT 2");

    foreach ($res as $row) {
        echo '<br>';
        print_r($row);
    }
 }

此脚本能够从新表中检索每个表中的记录。

更多信息:
  - 这是远程托管的Windows 10计算机上的MySQL数据库。
- 用户可以访问数据库中的所有表的完全访问权限。
我使用默认的DB选项创建了表:encoding:utf8,collat​​ion:utf8_general_ci,表类型:InnoDB
- 该表是由Sequel Pro使用INSERT INTO TABLE_NAME创建的 SELECT .....声明。
- 我使用MAMP Pro使用Macbook Pro访问数据库,但我还没有真正改变任何默认的PHP设置。

1 个答案:

答案 0 :(得分:0)

所以,如果这有助于其他任何人,我会感到惊讶。但解决我的问题的是向表中添加另一个字段。我是通过Sequel Pro的“结构”界面完成的。由于我的表有640万条记录,因此需要一段时间来添加字段,但一旦完成,我就可以通过PHP访问该表而没有任何问题。