我正在尝试从我的 PostgreSQL 9.3+PostGIS 数据库之一转储模式:
/usr/lib/postgresql/9.3/bin/pg_dump --schema-only
-h stg-db.....rds.amazonaws.com
-U user_name db_name > stg_db_schema.sql
Run Code Online (Sandbox Code Playgroud)
该命令在我的开发数据库上运行良好,但由于以下原因在 stg 和 prod 上失败:
pg_dump: [archiver (db)] query failed: ERROR: permission denied for relation direction_lookup
pg_dump: [archiver (db)] query was: LOCK TABLE tiger.direction_lookup IN ACCESS SHARE MODE
Run Code Online (Sandbox Code Playgroud)
问题似乎是tiger.direction_lookup. 我用谷歌搜索了一下,这张表似乎与 PostGIS 有关。
我试过--exclude-table-data=tiger.direction_lookup,没有效果(无论如何它都不应该适用于模式)。
知道如何转储我的数据库的架构吗?
考虑一个.sql包含一些选择和更新的文件。我想使用该psql实用程序从脚本运行此文件:
psql -h whatever.rds.amazonaws.com -U user dbname -f commands.sql
Run Code Online (Sandbox Code Playgroud)
问题是我得到了一个带有查询结果的交互式屏幕和一个(0 rows)(END),需要按下esc才能返回正常外壳。
我曾尝试使用--echo-all和/或--single-transaction遵循psql 手册,但没有成功。
如何sql在非交互模式下运行我的文件,只显示结果并退出脚本?
我想在 MySQL 数据库中存储一些protobuf对象。这些对象是在 Java 应用程序中创建的。该对象带有文本类型标识符和时间戳。
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | mediumint(9) | NO | PRI | NULL | auto_increment |
| type | varchar(30) | NO | MUL | NULL | |
| timestamp | date | NO | MUL | NULL | |
| pixel_data | ? | NO | MUL | NULL | |
+------------+--------------+------+-----+---------+----------------+
Run Code Online (Sandbox Code Playgroud)
的数据类型应该是什么pixel_data?
我最好的猜测是BLOB或TEXT。 …
我想执行一些语句,并在最后提交整个批处理。我尝试了以下方法:
connection.setAutoCommit(false); // Don't commit for each statement
int[] returnCodes = pstmt.executeBatch(); // Execute all statements
connection.setAutoCommit(true); // Back to normal state - future statements
// will be committed instantly
connection.commit(); // Commit our batch
Run Code Online (Sandbox Code Playgroud)
哪个失败了:
java.sql.SQLException: Can't call commit when autocommit=true
--reference to the line with connection.commit()--
Run Code Online (Sandbox Code Playgroud)
正确的做法是什么?是否connection.setAutoCommit(true)提交所有已执行的批处理语句?
根据PostGIS 手册,不应直接添加几何列,而应使用AddGeometryColumn():
\n\n\n\n\nAddGeometryColumn \xe2\x80\x94 将几何列添加到现有属性表中。\n
\n
我正在将架构从一个 PostgreSQL 实例复制到另一个实例。我想知道创建的 SQL 是否足够好 - 它会像AddGeometryColumn()pg_dump一样创建几何列吗?
我有一个经典的 3 环境设置(开发、暂存和生产),每个环境都有自己的RDS PostgreSQL 9.3。客户端/服务器版本是psql (9.3.5, server 9.3.3).
为了保持模式对齐,我有一个周期性的模式差异作业,当模式不同时它会通知我。
几天前,我开始收到许多这些差异:
CREATE TABLE ...
...
< title pg_catalog.text,
< subtitle pg_catalog.text,
---
> title text,
> subtitle text,
Run Code Online (Sandbox Code Playgroud)
textstaging 中的字段以某种方式转换为pg_catalog.textprod。
text和 和有pg_catalog.text什么区别?如何将这两个模式等同起来?
有没有办法显示对数据库拥有权限的所有用户?
我正在寻找类似的东西:
> show_permissions_for_db <DB>;
+----------+----------------------+
| User | Permissions |
+----------+----------------------+
| jeff | read |
| jill | read, write |
| jack | read, write, grant |
+----------+----------------------+
Run Code Online (Sandbox Code Playgroud) postgresql ×3
aws ×2
mysql ×2
pg-dump ×2
postgis ×2
amazon-rds ×1
auto-commit ×1
blob ×1
command-line ×1
datatypes ×1
dynamodb ×1
errors ×1
jdbc ×1
logs ×1
permissions ×1
psql ×1
python ×1
schema ×1
schema-copy ×1
spatial ×1
transaction ×1