Не удается подключиться к базе данных heroku postgresql из приложения локального узла с помощью sequelize

Это не просто MSVC.

GCC принимает его, если ваше определение функции находится ниже сайта вызова и прототипа нет. C всегда разрешал вызывать необъявленную функцию. Он передает прототип с сайта вызова. Поэтому я думаю, что поведение связано с этим аспектом (хотя, когда я перемещаю функцию над сайтом-корреспондентом в GCC, он изменяется на ошибку, что имеет смысл для C99). Это должно быть Неопределенное Поведение, тем не менее (разное количество аргументов, чем параметры).

int main()
{
   foo(1,2,3);
}

void foo(int a, int b)
{
}

f.c:6:6: warning: conflicting types for ‘foo’ [enabled by default]
 void foo(int a, int b)
      ^
f.c:3:4: note: previous implicit declaration of ‘foo’ was here
    foo(1,2,3);

Я нашел это

6.7.5.3p15:

[...] Если у одного типа есть список типов параметров, а другой тип определяется определением функции, которое содержит (возможно, пустой) список идентификаторов [это ваша ситуация], оба должны согласовывать число параметров и тип каждого параметра прототипа должен быть совместим с типом, который возникает в результате применения промо-аргументов по умолчанию к типу соответствующего идентификатора. [...]

.... но этот абзац не является частью ограничения. Нарушение «должно» за пределами секции ограничений - это неопределенное поведение, а не должно быть диагностированное поведение (4p2).

blockquote>

Я процитировал это из: http://compgroups.net /comp.lang.c/why-is-this-not-an-error-in-visual-c/732881

Ваш пробег может отличаться.

В короткое, по-видимому, единственное требование заключается в том, что компилятор лает на вас для некоторого определения коры. В VS 2013 он рассматривается как ошибка.

Что касается того, что происходит с аргументом, по той же причине, что переменные списки аргументов работают на C, сайт вызова должен вызывать дополнительный аргумент, но вызываемый не будет знать об этом (просто угадывая здесь). Хотя это работает, это не значит, что это определено поведение.

14
задан Iwazaru 29 December 2014 в 11:31
поделиться

1 ответ

У меня была та же проблема, и для этих случаев можно рассмотреть следующий пример документации о том, как соединить heroku базу данных:

https://sequelize.readthedocs.io/en/1.7.0/articles/heroku /

В конце я действительно реализовывал код как:

const sequelize = new Sequelize(
    process.env.DATABASE_NAME_DB_CONFIG,
    process.env.USER_NAME_DB_CONFIG,
    process.env.USER_PASSWORD_DB_CONFIG,
    {
        host: process.env.HOST_DB_CONFIG,
        dialect: process.env.DIALECT_DB_CONFIG,
        protocol: process.env.PROTOCOL_DB_CONFIG,
        logging:  true,
        dialectOptions: {
            ssl: true
        },
        pool: {
            max: 5,
            min: 0,
            idle: 10000
        }
    }
);

, где необходимо принять во внимание dialectOptions с ssl: true.

Это - все, что необходимо знать.

0
ответ дан 1 December 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: