【问题标题】:"USE statement is not supported to switch between databases" when running query运行查询时“不支持USE语句在数据库之间切换”
【发布时间】:2012-12-07 15:13:46
【问题描述】:

尝试使用php's 标准mssql_select_db 函数选择数据库时出现以下错误:USE statement is not supported to switch between databases. Use a new connection to connect to a different Database. (severity 16)。所以我很困惑从这里去哪里。

连接代码:

$link = mssql_connect('dsn', 'user@server', 'password');

if (!$link) {
   die('Unable to connect!');
}

if (!mssql_select_db('db', $link)) {
   die('Unable to select database!');
}

$result = mssql_query('SELECT * FROM yourtable');

while ($row = mssql_fetch_array($result)) {
   var_dump($row);
}

我的系统设置如下:

  • Ubuntu 12.10
  • PHP5
  • Apache2
  • 免费TDS
  • unixODBC
  • SQL Azure

我也在关注这个guide。

【问题讨论】:

  • 您要发送到数据库的 SQL 语句是什么?
  • 只是一个简单的列表。 SELECT * FROM someTbl
  • 您是否在同一个连接(教程中的$link 变量)上以不同的数据库名称多次调用mssql_select_db?
  • 不。除了填写我的凭据以正确连接之外,我使用的脚本与上面列出的指南中给出的完全相同。
  • 我自己没有使用Azure的经验,但是错误信息很清楚:you can't change databases with USE in SQL Azure。我不知道如何或是否可以阻止您的特定客户端库发出USE 命令,但我会尝试完全删除mssql_select_db() 调用并在您的ODBC DSN 中指定正确的数据库名称。希望这能将您直接连接到您要使用的数据库。

标签: php sql-server azure-sql-database freetds ubuntu-12.10


【解决方案1】:

作为对@Pondlife 上面最后一条评论的回应,由于他没有给出答案,我会为他做这件事,直到他自己发布为止。

@Pondlife 评论:

本人对Azure没有经验,但是报错信息很 明确:您不能在 SQL Azure 中使用 USE 更改数据库。我不知道 您如何或是否可以阻止您的特定客户端库发布 USE 命令,但我会尝试删除 mssql_select_db() 调用 并在您的 ODBC DSN 中指定正确的数据库名称。 希望这会将您直接连接到您想要的数据库 采用。 - 池塘生活

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    相关资源
    最近更新 更多