相关疑难解决方法(0)

设置 createDatabaseIfNotExist=true 后,Liquibase 未创建数据库

我在中添加了数据库配置build.gradle

liquibase {
   activities {
   main {      
      changeLogFile "${this.rootDir}/src/main/resources/changelog-master.xml"
      url "jdbc:postgresql://localhost:5432/test?createDatabaseIfNotExist=true"
      username "xxxx"
      password "xxxx"

     } 
  }
 runList = 'main'
} 
Run Code Online (Sandbox Code Playgroud)

createDatabaseIfNotExist在 URL 中设置为 true。

当我启动服务器时,它给出数据库不存在。

我希望 liquibase 创建数据库(如果它不存在)。

有什么建议请

java database liquibase gradle build.gradle

5
推荐指数
1
解决办法
4035
查看次数

仅当用户存在时如何执行“DROP OWNED BY”?

我正在尝试编写一个 bash 脚本来创建 Postgres 数据库,以及访问该数据库的用户和用户权限。我正在使用 Postgres 9.6。我有以下...

create_db_command="SELECT 'CREATE DATABASE $DB_NAME' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$DB_NAME')\gexec"
drop_owned_by_command="DROP OWNED BY $DB_USER;"
drop_role_command="DROP ROLE IF EXISTS $DB_USER;"
create_user_command="create user $DB_USER with encrypted password '$DB_PASS';"
grant_privs_command="grant all privileges on database $DB_NAME to $DB_USER;"

PGPASSWORD=$ROOT_PASSWORD
# This command creates the db if it doesn't already exist
echo "SELECT 'CREATE DATABASE $DB_NAME' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$DB_NAME')\gexec" | psql -U$PG_USER
psql -U$PG_USER $DB_NAME -c "$drop_owned_by_command" …
Run Code Online (Sandbox Code Playgroud)

postgresql privileges ddl roles psql

5
推荐指数
1
解决办法
1606
查看次数

PostgreSQL-动态创建数据库和表

该代码不起作用。谁能指导我在哪里可以找到使用C#快速创建Postgresql数据库和表的示例?

     const string connStr = "Server=localhost;Port=5432;
                          User Id=postgres;Password=enter;Database=postgres";

        var m_conn = new NpgsqlConnection(connStr);

        // creating a database in Postgresql
        m_createdb_cmd = new NpgsqlCommand("CREATE DATABASE IF NOT EXISTS  \"testDb\" " +
                                       "WITH OWNER = \"postgres\" " +
                                       "ENCODING = 'UTF8' " +
                                       "CONNECTION LIMIT = -1;", m_conn);

        // creating a table in Postgresql
        m_createtbl_cmd = new NpgsqlCommand(
            "CREATE TABLE MyTable(CompanyName VARCHAR(150))";

        m_conn.Open();
        m_createdb_cmd.ExecuteNonQuery();
        m_createtbl_cmd.Connection = m_conn;
        m_conn.Close();
Run Code Online (Sandbox Code Playgroud)

数据库已创建,但是在创建表时出现静默失败。

c# postgresql npgsql

3
推荐指数
2
解决办法
1万
查看次数

PostgreSQL + Hibernate + Spring自动创建数据库

我正在使用PostgreSQL和Spring 4,希望我的应用在运行时自动创建数据库。

我的实体类是:

@Entity
@Table(name = "user", schema = "public")
public class User extends BaseEntity {

    private Integer id;
    private String name;
    private Integer contractId;

    public User() {
    }

    public User(Integer id) {
        super(id);
    }

    @Id
    @Column(name = "usr_id", nullable = false)
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    @Basic
    @Column(name = "usr_name", nullable = true, length = -1)
    public String getName() {
        return name;
    }

    public void setName(String …
Run Code Online (Sandbox Code Playgroud)

java postgresql spring hibernate

3
推荐指数
3
解决办法
2万
查看次数

使用交叉表和计数的数据透视表

我必须显示这样的表格:

发表 没送到 没收到
2021年 10 86 75
2021年 二月 13 36 96
2021年 行进 49 7 61
2021年 四月 3 21 72

使用此查询生成的原始数据:

SELECT 
    year,
    TO_CHAR( creation_date, 'Month') AS month,
    marking,
    COUNT(*) AS count 
FROM invoices
GROUP BY 1,2,3
Run Code Online (Sandbox Code Playgroud)

我尝试过使用crosstab()但出现错误:

SELECT * FROM crosstab('
    SELECT 
        year,
        TO_CHAR( creation_date, ''Month'') AS month,
        marking,
        COUNT(*) AS count 
    FROM invoices
    GROUP BY 1,2,3
') AS ct(year text, month text, marking text)
Run Code Online (Sandbox Code Playgroud)

我不想手动输入所有标记值,因为它们很多。

ERROR:  invalid source data SQL …
Run Code Online (Sandbox Code Playgroud)

postgresql pivot-table dynamic-sql crosstab postgres-crosstab

2
推荐指数
1
解决办法
6937
查看次数

数据库“openpg”不存在严重性:致命代码:3D000

我正在尝试以 C# 编程方式创建一个 postGres 数据库,之前我已经手动创建了数据库,并使用连接字符串来打开它并对其进行操作,并且它运行良好。

现在我必须首先检查该 DBB 是否已经存在,如果不存在,则首先创建它,然后执行其他操作,例如读取写入它。

我这样做的代码是:

  internal void createDataBaseIfDoNotExist()
        {
            string connStr = string.Empty;
            connStr =
                           "Server=" + "localhost"
                         + ";Port=" + "5432"
                         + ";User Id=" + "openpg"
                         + ";Password=" + "oppwd"
                         + ";";
            var m_conn = new NpgsqlConnection(connStr);
            var m_createdb_cmd = new NpgsqlCommand(@"CREATE DATABASE IF NOT EXISTS testDb ;", m_conn);
            try
            {
                m_conn.Open();
                m_createdb_cmd.ExecuteNonQuery();
                m_conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Errr on createDataBaseIfDoNotExist query :" + ex);
            }
        }
    And it gives followign error:
database "openpg" …
Run Code Online (Sandbox Code Playgroud)

c# mysql database postgresql postgresql-9.1

1
推荐指数
1
解决办法
1万
查看次数

“CREATE EXTENTION IF NOT EXISTS”并没有真正检查扩展是否不存在

我想加载cube扩展,但它可能已经加载了。所以我这样做

CREATE EXTENSION IF NOT EXISTS cube;
Run Code Online (Sandbox Code Playgroud)

文档说,当指定 IF NOT EXISTS 时,它不应该抛出错误。但它确实:

ff_postgres_1  | 2020-07-26 18:15:46.233 UTC [33] ERROR:  duplicate key value violates unique constraint "pg_extension_name_index"
ff_postgres_1  | 2020-07-26 18:15:46.233 UTC [33] DETAIL:  Key (extname)=(cube) already exists.
ff_postgres_1  | 2020-07-26 18:15:46.233 UTC [33] STATEMENT:  
ff_postgres_1  |                    CREATE EXTENSION IF NOT EXISTS cube;
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?我正在运行 PostgreSQL 12.3

sql postgresql

0
推荐指数
1
解决办法
2789
查看次数