PostgreSql基础命令及问题总结
本章内容:
1、基本命令
基本命令
1、psql -U cdnetworks_beian -d cdnetworks_beian #-U指定用户,-d指定数据库
2、\l #相当于show databases;
3、\d #想当与show tables;
\d后面跟一个表名,表示显示这个表的结构定义
\db #显示创建的tablespace
4、DROP TABLE table_name #删除表
5、CREATE DATABASE dbname #创建数据库
6、DROP DATABASE #删除数据库
7、CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
);
#创建表
Mac 安装postgreSql的启动方法
To migrate existing data from a previous major version of PostgreSQL, see: https://www.postgresql.org/docs/10/static/upgrading.html You will need your previous PostgreSQL installation from brew to perform `pg_upgrade` or `pg_dumpall` depending on your upgrade method. Do not run `brew cleanup postgresql` until you have performed the migration. To have launchd start postgresql now and restart at login: brew services start postgresql Or, if you don't want/need a background service you can just run: pg_ctl -D /usr/local/var/postgres start ==> Summary 🍺 /usr/local/Cellar/postgresql/10.0: 3,367 files, 38.7MB brew services start postgresql #启动postgre brew services stop postgresql brew services restart postgresql
也可以用pg_ctl去启动
pg_ctl -D /usr/local/var/postgres/ -l /usr/local/var/postgres/server.log start #启动postgre sql pg_ctl -D /usr/local/var/postgres/ -l /usr/local/var/postgres/server.log restart
查看tablespace的方法
SELECT * FROM pg_tablespace; --- \db createuser cdnetworks_beian -s -P #创建炒鸡用户。然后就可以创建表空间了
事务报错
cdnetworks_beian=# CREATE TABLESPACE cdnetworks_beian LOCATION '/tmp/data/cdnetworks_beian'; CREATE TABLESPACE cdnetworks_beian=# \db List of tablespaces Name | Owner | Location ------------------+------------------+---------------------------- cdnetworks_beian | cdnetworks_beian | /tmp/data/cdnetworks_beian dbtbs01 | wangjin | /usr/local/var/postgres pg_default | wangjin | pg_global | wangjin | (4 rows) #本地可以正常链接,并执行命令,但是通过psycopg2会有问题,如下所示: In [17]: cur.execute("CREATE TABLE oui_service (service_id INT PRIMARY KEY,service_name VARCHAR(20)) TABLESPACE cdnetworks_beian;") --------------------------------------------------------------------------- InternalError Traceback (most recent call last) <ipython-input-17-6d2937a75a92> in <module>() ----> 1 cur.execute("CREATE TABLE oui_service (service_id INT PRIMARY KEY,service_name VARCHAR(20)) TABLESPACE cdnetworks_beian;") InternalError: current transaction is aborted, commands ignored until end of transaction block #事务被终端了,这时候需要 conn.commit() 下,让其回滚,然后再去执行其他的操作
远程登录没有权限
远程登录操作,如上报错,实际上本地是可以登录,也可以创建任何东西的。
需要修改下配置
1.修改pg_hba.conf文件,配置用户的访问权限(#开头的行是注释内容):
- # TYPE DATABASE USER CIDR-ADDRESS METHOD
- # "local" is for Unix domain socket connections only
- local all all trust
- # IPv4 local connections:
- host all all 127.0.0.1/32 trust
- host all all 192.168.1.0/24 md5
- # IPv6 local connections:
- host all all ::1/128 trust
其中,第7条是新添加的内容,表示允许网段192.168.1.0上的所有主机使用所有合法的数据库用户名访问数据库,并提供加密的密码验证。
其中,数字24是子网掩码,表示允许192.168.1.0--192.168.1.255的计算机访问!
2.修改postgresql.conf文件,将数据库服务器的监听模式修改为监听所有主机发出的连接请求。
定位到#listen_addresses=’localhost’。PostgreSQL安装完成后,默认是只接受来在本机localhost的连接请 求。
将行开头都#去掉,将行内容修改为listen_addresses=’*'来允许数据库服务器监听来自任何主机的连接请求
然后重启服务,这是后远程就可以登录操作了。
tablesspace 目录下的文件被删除了
报错:
原因:
把这个tablespace指向的文件,放到这个tmp目录下了,一重启什么都没有了,需要重新建立
# drop tablespace if exists cdnetworks_beian;
#create tablespace cdnetworks_beian location '/Users/shell/postgresql/data';