【问题标题】:"use" command failing with syntax error in PostgreSQL (converting from MySQL)“使用”命令在 PostgreSQL 中因语法错误而失败(从 MySQL 转换)
【发布时间】:2014-02-22 00:58:56
【问题描述】:

所以,我正在尝试将基于 MySQL 的数据库转换为 PostgreSQL 数据库,但我得到了一些不太理想的结果。我的代码以此开头:

create database bookmarks;
use bookmarks;

但我收到一条错误消息:

ERROR:  syntax error at or near "use"
LINE 2: use bookmarks;
        ^

老实说,我不知道我需要做些什么来解决这个问题。您可以为我提供的任何帮助将不胜感激。谢谢。

【问题讨论】:

  • 您是使用psql 手动执行此操作,还是使用某种编程语言来执行此操作?
  • MySQL 中的数据库通常更好地映射到 Postgres 中的模式。值得一提的是,MySQL 中的数据库的行为和工作方式类似于模式。 MySQL 根本没有选择这样称呼它们(尽管在某些地方模式和数据库在 MySQL 中是同义词 - 非常混乱)
  • 请尽量使用更具体的标题来回答问题,顺便说一句。 “马”也是对的;如果您要切换数据库,您可能希望在一个数据库中使用模式并使用search_path 在它们之间进行交换。

标签: php mysql postgresql pdo


【解决方案1】:

在 PostgreSQL 中,当您启动与服务器的连接时,您会连接到要使用的特定数据库。您需要如何执行此操作完全取决于您使用的语言/环境。

如果您使用psql 命令行工具手动执行此操作,那么 MySQL 中的 USE mydatabase; 等效于 PostgreSQL 中的 \c mydatabase;

编辑:在 PHP 中,如果你想创建一个新的数据库然后连接到它,你应该执行以下操作:

  1. 使用现有数据库连接到您的服务器 - template1postgres 是常见的选择。使用此连接执行CREATE DATABASE bookmarks;

  2. 使用new PDO("pgsql:host=localhost;port=5432;dbname=bookmarks;user=myuser;password=mypassword"); 创建到您刚刚创建的数据库的新连接(当然,根据需要将 DSN 参数替换为您的特定值)。

    李>

现在您已连接到新数据库,您执行的任何查询都将针对bookmarks 执行。无需执行USE bookmarks; 或其他任何操作。

【讨论】:

  • 我实际上是在使用 PHP 实现数据库。我试图通过这行代码来做到这一点:
猜你喜欢
  • 1970-01-01
  • 2020-11-15
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
相关资源
最近更新 更多