预演师和PostgreSQL 15
这篇文章是关于开源软件的无代码/低代码开发工具”Presenter”的日历| Qiita两千二十二年圣诞节活动的第十四天的文章。
请注意
请注意:由于Presenter版本1.3.44.0已对PostgreSQL 15进行了兼容,因此本条目的内容已与当前版不同。
请注意,这是关于Presenter版本1.3.43.0及以前的信息。
首先/首要的是
PostgreSQL已经升级到了15版本。
我们立即将它与幻灯片配对使用吧。
CodeDefiner报错。
突然ですが,当您执行CodeDefiner时会出现错误。
就是这个样子。(实际上会输出这个错误多次)
<INFO> TablesConfigurator.ConfigureTableSet: AutoNumberings
<INFO> Tables.CreateTable: AutoNumberings
<ERROR> <>c__DisplayClass0_0.<Configure>b__0: [AutoNumberings]: Npgsql.PostgresException (0x80004005): 42501: permission denied for schema public
POSITION: 20
at Npgsql.Internal.NpgsqlConnector.<ReadMessage>g__ReadMessageLong|221_0(NpgsqlConnector connector, Boolean async, DataRowLoadingMode dataRowLoadingMode, Boolean readingNotifications, Boolean isReadingPrependedMessage)
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
at Npgsql.NpgsqlDataReader.NextResult(Boolean async, Boolean isConsuming, CancellationToken cancellationToken)
at Npgsql.NpgsqlDataReader.NextResult()
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteReader(CommandBehavior behavior, Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteNonQuery(Boolean async, CancellationToken cancellationToken)
at Npgsql.NpgsqlCommand.ExecuteNonQuery()
at Implem.PostgreSql.PostgreSqlCommand.ExecuteNonQuery() in /src/Rds/Implem.PostgreSql/PostgreSqlCommand.cs:line 133
at Implem.Libraries.DataSources.SqlServer.SqlIo.<>c__DisplayClass13_0.<ExecuteNonQuery>b__0() in /src/Implem.Libraries/DataSources/SqlServer/SqlIo.cs:line 113
at Implem.Libraries.DataSources.SqlServer.SqlIo.Try(ISqlObjectFactory factory, Action action) in /src/Implem.Libraries/DataSources/SqlServer/SqlIo.cs:line 287
at Implem.Libraries.DataSources.SqlServer.SqlIo.ExecuteNonQuery(ISqlObjectFactory factory, IDbTransaction dbTransaction, IDbConnection dbConnection) in /src/Implem.Libraries/DataSources/SqlServer/SqlIo.cs:line 110
at Implem.Libraries.DataSources.SqlServer.SqlIo.ExecuteNonQuery(ISqlObjectFactory factory, SqlStatement sqlStatement, IDbTransaction dbTransaction, IDbConnection dbConnection) in /src/Implem.Libraries/DataSources/SqlServer/SqlIo.cs:line 311
at Implem.CodeDefiner.Functions.Rds.Parts.Tables.CreateTable(ISqlObjectFactory factory, String generalTableName, String sourceTableName, TableTypes tableType, IEnumerable`1 columnDefinitionCollection, IEnumerable`1 tableIndexCollection, EnumerableRowCollection`1 rdsColumnCollection, String tableNameTemp) in /src/Implem.CodeDefiner/Functions/Rds/Parts/Tables.cs:line 36
at Implem.CodeDefiner.Functions.Rds.TablesConfigurator.ConfigureTablePart(ISqlObjectFactory factory, String generalTableName, String sourceTableName, TableTypes tableType, IEnumerable`1 columnDefinitionCollection) in /src/Implem.CodeDefiner/Functions/Rds/TablesConfigurator.cs:line 115
at Implem.CodeDefiner.Functions.Rds.TablesConfigurator.ConfigureTableSet(ISqlObjectFactory factory, String generalTableName) in /src/Implem.CodeDefiner/Functions/Rds/TablesConfigurator.cs:line 86
at Implem.CodeDefiner.Functions.Rds.TablesConfigurator.<>c__DisplayClass0_0.<Configure>b__0(String generalTableName) in /src/Implem.CodeDefiner/Functions/Rds/TablesConfigurator.cs:line 19
Exception data:
Severity: ERROR
SqlState: 42501
MessageText: permission denied for schema public
Position: 20
File: aclchk.c
Line: 3650
Routine: aclcheck_error
关键在这里。
信息文本:对于公共模式,权限被拒绝
在中文中有很多种翻译方式,以下是其中一种可能的翻译:
发生了什么事情?
在日语新闻稿的“其他主要更改”部分中有说明。
引用下面这句话:
在PostgreSQL 15中,除了默认模式(public)的数据库所有者,所有其他用户都将被剥夺创建权限。
这是说。
那么我们该怎么办呢?
解决方案 (jiě jué àn)
这篇文章非常有参考价值。
为了安全运营公共模式,可以按照”安全模式使用模式”中推荐的方法,为每个用户分配一个模式。
在运行CodeDefiner之前,请先创建模式。
create user "Rds接続文字列に指定しているOwnerユーザ名" with password 'Rds接続文字列に指定しているOwnerのパスワード';
create schema authorization "上記ユーザ名";
create database "サービス名" with owner "上記ユーザ名";
如果使用默认的Service.json中的Name和Owner的Rds连接字符串作为示例的话,情况将会如下。
create user "Implem.Pleasanter_Owner" with password 'SetAdminsPWD';
create schema authorization "Implem.Pleasanter_Owner";
create database "Implem.Pleasanter" with owner "Implem.Pleasanter_Owner";
通过这种方式,CodeDefiner能够成功创建所需的表格。
请确保所有创建用户的密码都从默认密码变为不同的密码,并进行使用。请不要使用默认密码。
相關信息
プリザンターをUbuntuにインストールする
https://pleasanter.org/manual/getting-started-pleasanter-ubuntu
パラメータ設定:Service.json
https://pleasanter.org/manual/service-json
パラメータ設定:Rds.json
https://pleasanter.org/manual/rds-json