• 28-09-2023, 19:45:25
    #1
    Node express ile MySQL2 paketini kullanarak bir API hazırladım. Önce MYSQL paketiyle denedim aynı şey olmuştu.
    API'a istek attığım zaman hiçbir problem yok, bağlantıyı getConnection ile açıyor işlemleri yaptıktan sonra release methoduyla havuza tekrar gönderiyorum.

    Ama bazen API'a istek attığımda (uygulamamda kullanıyorum) cevap gelmediğini ve bir hatanın döndüğünü gördüm.

    Can't add new command when connection is in closed state

    Hata bu, bazen geliyor dediğim gibi her zaman değil. Nadiren geliyor ve bağlantıyı kapat gibi bir fonksiyon kullanmadım. Gerekince bağlantıyı açıyorum ve işim bitince pool'a geri yolluyorum.
    Daha önce karşılaşan var mı bu sorunla? İlk kez node ile yapıyorum da.
  • 28-09-2023, 19:47:50
    #2
    omergundogar adlı üyeden alıntı: mesajı görüntüle
    Node express ile MySQL2 paketini kullanarak bir API hazırladım. Önce MYSQL paketiyle denedim aynı şey olmuştu.
    API'a istek attığım zaman hiçbir problem yok, bağlantıyı getConnection ile açıyor işlemleri yaptıktan sonra release methoduyla havuza tekrar gönderiyorum.

    Ama bazen API'a istek attığımda (uygulamamda kullanıyorum) cevap gelmediğini ve bir hatanın döndüğünü gördüm.

    Can't add new command when connection is in closed state

    Hata bu, bazen geliyor dediğim gibi her zaman değil. Nadiren geliyor ve bağlantıyı kapat gibi bir fonksiyon kullanmadım. Gerekince bağlantıyı açıyorum ve işim bitince pool'a geri yolluyorum.
    Daha önce karşılaşan var mı bu sorunla? İlk kez node ile yapıyorum da.
    Hocam muhtemelen timeout oluyor. Timeout ayarını 0 yapıp dener misiniz
  • 28-09-2023, 19:48:15
    #3
    aTKn94 adlı üyeden alıntı: mesajı görüntüle
    Hocam muhtemelen timeout oluyor. Timeout ayarını 0 yapıp dener misiniz
    onu nasıl yapabilirim

      private async connectMysql() {
        const access: ConnectionOptions = {
          host: process.env.HOST,
          user: process.env.USER,
          password: process.env.PASSWORD,
          database: process.env.DATABASE,
          multipleStatements: true,
          connectionLimit: 10,
          waitForConnections: true,
          typeCast: function (field, next) {
            if (field.type == "NEWDECIMAL") {
              var value = field.string();
              return value === null ? null : Number(value);
            }
            return next();
          },
        };
        this.con = mysql.createPool(access);
      }
  • 28-09-2023, 19:58:06
    #4
    omergundogar adlı üyeden alıntı: mesajı görüntüle
    onu nasıl yapabilirim

      private async connectMysql() {
        const access: ConnectionOptions = {
          host: process.env.HOST,
          user: process.env.USER,
          password: process.env.PASSWORD,
          database: process.env.DATABASE,
          multipleStatements: true,
          connectionLimit: 10,
          waitForConnections: true,
          typeCast: function (field, next) {
            if (field.type == "NEWDECIMAL") {
              var value = field.string();
              return value === null ? null : Number(value);
            }
            return next();
          },
        };
        this.con = mysql.createPool(access);
      }
    const pool = mysql.createPool({
    host: 'localhost',
    user: 'root',
    database: 'test',
    waitForConnections: true,
    connectionLimit: 10,
    maxIdle: 10, // max idle connections, the default value is the same as `connectionLimit`
    idleTimeout: 60000, // idle connections timeout, in milliseconds, the default value 60000
    queueLimit: 0,
    enableKeepAlive: true,
    keepAliveInitialDelay: 0
    });
    Hocam muhtemelen idleTimeout işinizi görecektir. Tabi emin değilim denemekte fayda var
  • 28-09-2023, 23:41:44
    #5
    Pool kullanırken getConnection ve manuel olarak bağlantıyı havuza geri göndermek için release methodunu kullanıyordum.
    Ancak pool.query ile bunun otomatik yapıldığını farkettim
    tüm kodlarımı düzenledim şuanlık hiçbir sıkıntı yok gibi görünüyor.