【问题标题】:Unable to create a table in new database无法在新数据库中创建表
【发布时间】:2019-06-05 07:26:40
【问题描述】:

这里是 SQL 初学者,特别是使用 PostgreSQL。我正在尝试为这里的课程做点什么,但我不断收到一条错误消息,我不知道为什么。我创建了一个名为“游戏”的新数据库,并且正在尝试创建一个基本表。代码如下。

我收到的错误信息是,[0A000] ERROR: cross-database references are not implemented: "games.games_schema.player_data" Position: 14

我可以使用 postgreSQL 在默认数据库中创建表,但为什么我在尝试在这个新数据库中专门创建此表时遇到问题?

创建数据库游戏;

创建表 games.games_schema.Player_Data (Player_ID 整数, Player_Name VARCHAR(255), Player_System VARCHAR(255));

我认为我设置创建表语句的方式是告诉服务器在该位置创建一个表。 (数据库 --> DBschema --> 表)

感谢您的帮助。

【问题讨论】:

    标签: postgresql datagrip


    【解决方案1】:

    您创建了游戏数据库,但并未在其中创建 games_schema。它只会创建公共模式(除非已修改默认模板)解决方案是在“游戏”数据库中创建“游戏模式”,或在公共模式中创建数据库对象。
    选项 1:创建架构。

    create schema games_schema; 
    create table games_schema.player_data( ... );
    

    选项 2:使用公共架构。

    create table player_data( ... );
    

    我的选择是选项 1,因为除了扩展和 Postgres 提供的对象之外,我从不允许任何东西公开。

    【讨论】:

    • 嘿,谢谢您的回复,我可以通过右键单击侧窗口中的数据库和架构来做到这一点,但是当我尝试执行代码时,它不会让我创建架构。我尝试输入 create schema games.games_schema;并且它不会执行说存在语法错误。我只是想知道为什么我必须右键单击并使用界面在数据库中构建表,而不是仅仅能够纠正语句。
    • 如果我输入了创建模式 games_schema;它会默认将架构放在默认的 postgres db 下。
    • 是的。创建架构将在您登录的数据库中创建指定的架构。
    • 我是个白痴,这是因为我没有与该特定数据库关联的新控制台,我使用的是与公共数据库关联的控制台。感谢大家的支持。
    猜你喜欢
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-03
    • 2019-01-14
    相关资源
    最近更新 更多