无法连接到 Snowflake 数据库 [PHP]
Cannot connect to Snowflake Database [PHP]
我要达到的 table 的结构是这样的:
- 数据库:INTERNAL_STUFF
- 架构:INTERNAL_TEST
- Table: TEST_TABLE_SIMPLE
我这样创建 PDO:
$dbh = new PDO("snowflake:account=$this->account", $this->user, $this->password);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
如果我使用这个查询:
$result = $dbh->query("SELECT * FROM INTERNAL_STUFF.INTERNAL_TEST.TEST_TABLE_SIMPLE");
我最终收到了这样的回复——“架构 'INTERNAL_STUFF.INTERNAL_TEST' 不存在或未经授权。”。所以它似乎只是将数据库和模式视为模式。
如果我使用相同的查询但从前面删除数据库:
$result = $dbh->query("SELECT * FROM INTERNAL_TEST.TEST_TABLE_SIMPLE");
我最终收到此响应 - 'SQLSTATE[22000]:数据异常:90105 无法执行 SELECT。此会话没有当前数据库。调用 'USE DATABASE',或使用限定名称。'
我在这里做错了什么?我的用户可以访问正确的角色来查看 table,并且那个确切的查询(两者中较长的那个)在雪花工作表中工作得很好。
在执行主 Sql 查询之前,您能否执行查询 USE DATABASE INTERNAL_STUFF 和下一个查询 USE SCHEMA INTERNAL_TEST。
您还可以使用 Alter User 语句为您的用户设置默认命名空间(数据库和架构)。
详情:https://docs.snowflake.com/en/sql-reference/sql/alter-user.html#usage-notes
我要达到的 table 的结构是这样的:
- 数据库:INTERNAL_STUFF
- 架构:INTERNAL_TEST
- Table: TEST_TABLE_SIMPLE
我这样创建 PDO:
$dbh = new PDO("snowflake:account=$this->account", $this->user, $this->password);
$dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
如果我使用这个查询:
$result = $dbh->query("SELECT * FROM INTERNAL_STUFF.INTERNAL_TEST.TEST_TABLE_SIMPLE");
我最终收到了这样的回复——“架构 'INTERNAL_STUFF.INTERNAL_TEST' 不存在或未经授权。”。所以它似乎只是将数据库和模式视为模式。
如果我使用相同的查询但从前面删除数据库:
$result = $dbh->query("SELECT * FROM INTERNAL_TEST.TEST_TABLE_SIMPLE");
我最终收到此响应 - 'SQLSTATE[22000]:数据异常:90105 无法执行 SELECT。此会话没有当前数据库。调用 'USE DATABASE',或使用限定名称。'
我在这里做错了什么?我的用户可以访问正确的角色来查看 table,并且那个确切的查询(两者中较长的那个)在雪花工作表中工作得很好。
在执行主 Sql 查询之前,您能否执行查询 USE DATABASE INTERNAL_STUFF 和下一个查询 USE SCHEMA INTERNAL_TEST。
您还可以使用 Alter User 语句为您的用户设置默认命名空间(数据库和架构)。
详情:https://docs.snowflake.com/en/sql-reference/sql/alter-user.html#usage-notes