【问题标题】:PostgreSQL table does not existPostgreSQL 表不存在
【发布时间】:2017-10-06 07:13:32
【问题描述】:
drop table Employee;   

 CREATE TABLE Employee
    (   EmployeeID integer,
        FirstName varchar(24),
        LastName varchar(24),
        Email varchar(48),
        PhoneNumber varchar(12),
        HotelID integer
        PRIMARY KEY (EmployeeID),
    );

    INSERT INTO Employee VALUES (1, ‘James’, ‘Jenkins’, ‘jj@gmail.com’, ’0412181111’, 1);
    INSERT INTO Employee VALUES (22, ‘Roy’, ‘Bond’, ‘jb@gmail.com’, ‘0418246192’, 1);
    INSERT INTO Employee VALUES (14, ‘Rachel’, ‘Green’, ‘rg@gmail.com’, ‘0468129367’, 1);
    INSERT INTO Employee VALUES (96, ‘Eddard’, ‘Stark’, ‘es@gmail.com’, ‘0458192716’, 1);
    INSERT INTO Employee VALUES (77, ‘Anna’, ‘Nguyen’, ‘an@gmail.com’ , ‘0418238694’, 1);

错误:“psql:employee:1: 错误:表“employee”不存在”

有什么方法可以修复错误?

如果有人想查看,请链接到整个文档:https://docs.google.com/document/d/1r4E7yz4XJxLmO3rmkH4YBVOGfYN5PkhcDSJUyuy7qxw/edit?usp=sharing

【问题讨论】:

  • 参考酒店?
  • @Strawberry,即使作为独立表,它仍然显示不存在错误。我从数据库中复制了这个
  • 对我来说很好sqlfiddle.com/#!9/d5e44c
  • 您使用的是 MySQL 还是 Postgresql?不要标记未涉及的产品。
  • @jarlh 修复了标签,感谢您为我指出这一点

标签: sql postgresql


【解决方案1】:

您的 create 语句在声明主键之前缺少逗号 (,)。因此该表没有被创建。这个这个:

CREATE TABLE Employee
(   EmployeeID integer,
FirstName varchar(24),
LastName varchar(24),
Email varchar(48),
PhoneNumber varchar(12),
HotelID integer,
PRIMARY KEY (EmployeeID),
FOREIGN KEY (HotelID) REFERENCES Hotel
);

【讨论】:

  • 这不是问题,我在create语句中添加了逗号但没有区别
  • 你对代码做了什么改动,我没找到?
  • 你能把你的create statement表单张贴在Hotel table吗?
  • 尝试用我的查询替换您的员工创建查询,它应该可以工作
  • 没用,这里是错误psql:employee:1: ERROR: table "employee" does not exist psql:employee:15: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "employee_pkey" for table "employee" CREATE TABLE psql:employee:16: ERROR: column "‘james’" does not exist psql:employee:17: ERROR: column "‘roy’" does not exist psql:employee:18: ERROR: column "‘rachel’" does not exist psql:employee:19: ERROR: column "‘eddard’" does not exist psql:employee:20: ERROR: column "‘anna’" does not exist
【解决方案2】:

当您尝试在 sn-p 上运行时,可能尚未在您的数据库中创建表 Employee。在删除表或存储过程或函数之前,请始终进行 IF EXISTS 检查。

你的 drop 查询应该是。

drop table if exists `Employee`; 

【讨论】:

  • 反引号在 Postgres 中无效(顺便说一句:Postgres 确实 支持事务性 DDL - 如果关闭自动提交,rweise 的答案是正确的 - 您可能需要提交才能使创建或删除永久网)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2020-03-28
  • 1970-01-01
  • 2022-01-24
  • 2014-12-25
  • 1970-01-01
相关资源
最近更新 更多