Tedious: μž…λ ₯ λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ μš”μ²­ 였λ₯˜

에 λ§Œλ“  2020λ…„ 01μ›” 14일  Β·  40μ½”λ©˜νŠΈ  Β·  좜처: tediousjs/tedious

--EDIT-- μ•„λž˜ λŒ“κΈ€μ—μ„œ μ§€λ£¨ν•œ 버전 보기

쿼리λ₯Ό μž‘μ„±ν•˜κ³  μ‹€ν–‰ν•  λ•Œ λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” SELECT λ¬Έ(예: 'SELECT * FROM table' λ˜λŠ” 'SELECT column1, column2 FROM table')은 문제 없이 μž‘λ™ν•©λ‹ˆλ‹€. λ§€κ°œλ³€μˆ˜κ°€ μžˆκ±°λ‚˜ μ—†λŠ” WHERE μ ˆμ„ 갖도둝 이 λͺ…령문을 μˆ˜μ •ν•˜λ©΄ 'RequestError: Failed to cancel request in 5000ms' μ‹œκ°„μ΄ μ΄ˆκ³Όλ©λ‹ˆλ‹€. μ½”λ“œ:

const sql = require('mssql');
let users = {};
const config = {
    server: 'server',
    authentication: {
        type: 'default',
        options: {
            userName: 'user',
            password: 'password'  
        }}
};
sql.connect(config).then(pool => {
    let query = 'SELECT column FROM table WHERE Term = <strong i="7">@term</strong>';
    return pool.request()
       .input('term', sql.Int, 1)
       .query(query)
}).then(result =>{
    users = result;
    sql.close();
    console.log(users);
}).catch(err =>{
    console.log(err);
});

전체 였λ₯˜ μŠ€νƒ:

RequestError: Failed to cancel request in 5000ms
    at Request.userCallback (C:\Users\v\WebstormProjects\project\node_modules\mssql\lib\tedious\request.js:429:19)
    at Request.callback (C:\Users\v\WebstormProjects\project\node_modules\tedious\lib\request.js:56:14)
    at Connection.socketError (C:\Users\v\WebstormProjects\project\node_modules\tedious\lib\connection.js:2416:20)
    at Connection.dispatchEvent (C:\Users\v\WebstormProjects\project\node_modules\tedious\lib\connection.js:1274:15)
    at Connection.cancelTimeout (C:\Users\v\WebstormProjects\project\node_modules\tedious\lib\connection.js:1198:10)
    at Timeout._onTimeout (C:\Users\v\WebstormProjects\project\node_modules\tedious\lib\connection.js:1162:14)
    at listOnTimeout (internal/timers.js:531:17)
    at processTimers (internal/timers.js:475:7) {
  code: 'ETIMEOUT',
  originalError: ConnectionError: Failed to cancel request in 5000ms
      at ConnectionError (C:\Users\v\WebstormProjects\project\node_modules\tedious\lib\errors.js:13:12)
      at Connection.cancelTimeout (C:\Users\v\WebstormProjects\project\node_modules\tedious\lib\connection.js:1198:67)
      at Timeout._onTimeout (C:\Users\v\WebstormProjects\project\node_modules\tedious\lib\connection.js:1162:14)
      at listOnTimeout (internal/timers.js:531:17)
      at processTimers (internal/timers.js:475:7) {
    message: 'Failed to cancel request in 5000ms',
    code: 'ETIMEOUT'
  },
  name: 'RequestError',
  number: 'ETIMEOUT',
  state: undefined,
  precedingErrors: []
}

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ›μŠ€, λ‚΄ λ‚˜μœ, λ‚˜λŠ” λ‘˜ λ‹€ μ—΄λ € μžˆμŠ΅λ‹ˆλ‹€ : P μ£„μ†‘ν•©λ‹ˆλ‹€ 그리고 κ°μ‚¬ν•©λ‹ˆλ‹€

λͺ¨λ“  40 λŒ“κΈ€

tedious 직접 μ‚¬μš©ν•˜μ§€ μ•Šκ³  mssql . https://github.com/tediousjs/node-mssql μ—μ„œ 문제λ₯Ό μ—΄κ±°λ‚˜ tedious 문제λ₯Ό μž¬ν˜„ν•΄ λ³΄μ„Έμš”. πŸ™‡

μ›μŠ€, λ‚΄ λ‚˜μœ, λ‚˜λŠ” λ‘˜ λ‹€ μ—΄λ € μžˆμŠ΅λ‹ˆλ‹€ : P μ£„μ†‘ν•©λ‹ˆλ‹€ 그리고 κ°μ‚¬ν•©λ‹ˆλ‹€

두 라이브러리 λͺ¨λ‘μ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν–ˆκΈ° λ•Œλ¬Έμ— μ‹€μ œλ‘œ μ§€λ£¨ν•œ μ½”λ“œμ— λ™μΌν•œ μ½”λ“œκ°€ μžˆμŠ΅λ‹ˆλ‹€. λ™μΌν•œ μ½”λ“œ, 문제 λ“±. μ½”λ“œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

const Connection = require('tedious').Connection;
const config = {
    server: 'server',
    authentication: {
        type: 'default',
        options: {
            userName: 'user', 
            password: 'password'
        }
    },
    options: {
        // If you are on Microsoft Azure, you need encryption:
        encrypt: true,
        database: 'db'  //update me
    }
};
const Request = require('tedious').Request;
const TYPES = require('tedious').TYPES;

const connection = new Connection(config);
connection.on('connect', connected);
connection.on('errorMessage', infoError);
connection.on('end', end);

const table = [];

function connected(err) {
    if (err) {
        console.log(err);
        process.exit(1);
    }

    console.log('connected');

    exec("SELECT colum1, colum2 FROM table WHERE Term=@term;");
    //console.log(table)
}


function exec(sql) {
    let request = new Request(sql, statementComplete);
    request.on('columnMetadata', columnMetadata);
    request.on('row', rows);
    request.on('done', requestDone);
    request.addParameter('term', TYPES.Int, 1);

    connection.execSql(request);
}

function requestDone(rowCount, more) {
    //console.log(rowCount + ' rows');
}

function statementComplete(err, rowCount) {
    if (err) {
        console.log('Statement failed: ' + err);
    } else {
        console.log(rowCount + ' rows');
    }
}

function end() {
    console.log('Connection closed');
    process.exit(0);
}

function infoError(info) {
    console.log(info.number + ' : ' + info.message);
}

function columnMetadata(columnsMetadata) {
    columnsMetadata.forEach(function(column) {
        //console.log(column.colName);
    });
}


function rows(columns) {
    let row = [];
    columns.forEach(function(column) {
        let value;
        if (column.value === null) {
            value = 'NULL';
        } else {
            value = column.value;
        }
        row.push(value);
    });
    console.log(row);
}

μ„€λͺ…을 μœ„ν•΄ λ™μΌν•œ λ¬Έμ œμž…λ‹ˆλ‹€. 이것은 μˆœμˆ˜ν•œ μ§€λ£¨ν•œ 버전일 λΏμž…λ‹ˆλ‹€. 였λ₯˜:
λͺ…λ Ήλ¬Έ μ‹€νŒ¨: ConnectionError: 5000ms 이내에 μš”μ²­μ„ μ·¨μ†Œν•˜μ§€ λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @snekxer μž…λ‹ˆλ‹€ .

λ§€κ°œλ³€μˆ˜κ°€ μžˆκ±°λ‚˜ μ—†λŠ” WHERE μ ˆμ„ 갖도둝 이 λͺ…령문을 μˆ˜μ •ν•˜λ©΄ 'RequestError: Failed to cancel request in 5000ms' μ‹œκ°„μ΄ μ΄ˆκ³Όλ©λ‹ˆλ‹€.

Where μ ˆλ„ μ‚¬μš©ν•˜μ—¬ 슀크립트λ₯Ό μ‹€ν–‰ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ λ‚΄ λ°μ΄ν„°λŠ” μ •μƒμ μœΌλ‘œ κ²€μƒ‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

sql 문의 λ§€κ°œλ³€μˆ˜κ°€ 잘λͺ»λ˜μ—ˆκ±°λ‚˜ ꡬ성에 λ¬Έμ œκ°€ μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

@IanChokS , λ‚΄κ°€ 두 번째둜 κ²Œμ‹œν•œ μ½”λ“œ(μ£Όμ„μ—μ„œ)λ₯Ό 보면 WHERE 절이 ν¬ν•¨λ©λ‹ˆλ‹€. DBμ—μ„œ λ™μΌν•œ SQL 쿼리λ₯Ό μ‹€ν–‰ν•˜μ—¬ μ œλŒ€λ‘œ μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν–ˆμœΌλ©° 쿼리 λ¬Έμ œκ°€ μ•„λ‹˜μ„ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. config의 경우 configλ₯Ό κ±΄λ“œλ¦¬μ§€ μ•Šκ³  쿼리만 μˆ˜μ •ν•˜λ©΄ κ·ΈλŒ€λ‘œ μ§„ν–‰λ©λ‹ˆλ‹€.
λ§€κ°œλ³€μˆ˜κ°€ μž‘λ™ν•˜λ €λ©΄ ꡬ성에 포함해야 ν•˜λŠ” λ‹€λ₯Έ 것이 μžˆμŠ΅λ‹ˆκΉŒ?

흠 ν₯λ―Έλ‘­λ‹€ πŸ€”

λ‚΄κ°€ μ‚¬μš©ν•œ μΏΌλ¦¬λŠ”
image

λͺ¨λ‘ μž‘λ™ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 이것이 'WHERE 절이 포함됨'을 μ˜λ―Έν•©λ‹ˆκΉŒ?

μ–΄λ–€ μ§€λ£¨ν•œ 버전을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

v6.13.0을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

예, λ™μΌν•œ 쿼리가 저와 λ§€κ°œλ³€μˆ˜ν™”λœ 버전에 λŒ€ν•΄ μ‹€νŒ¨ν•©λ‹ˆλ‹€. exec ν•¨μˆ˜μ—μ„œ "addParameter"λ₯Ό μ°Έμ‘°ν•˜μ‹­μ‹œμ˜€.

function connected(err) {
    if (err) {
        console.log(err);
        process.exit(1);
    }
    console.log('connected');
    exec("SELECT colum1, colum2 FROM table WHERE Term=@term;");
}

function exec(sql) {
    let request = new Request(sql, statementComplete);
    request.addParameter('term', TYPES.Int, 1);
    request.on('columnMetadata', columnMetadata);
    request.on('row', rows);
    connection.execSql(request);
}

@snekxerλ‹˜ , μŠ€ν¬λ¦½νŠΈμ™€ λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” 쿼리λ₯Ό μ‚¬μš©ν•˜μ—¬ λ™μž‘μ„ μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ 이것을 νŒŒν—€μ³λ³΄κ³  λ“œλΌμ΄λ²„κ°€ μ™œ μ΄λ ‡κ²Œ ν–‰λ™ν•˜λŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

λ‚΄ 섀정은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.
image

image

image

κ·Έλž˜μ„œ 데이터λ₯Ό 되찾고 μžˆμŠ΅λ‹ˆλ‹€. μ„€μ •μ—μ„œ λˆ„λ½λœ 것이 μžˆμŠ΅λ‹ˆκΉŒ? @MichaelSun90 였λ₯˜λ₯Ό μ–΄λ–»κ²Œ μž¬ν˜„ν–ˆμŠ΅λ‹ˆκΉŒ?

μ•„λ‹ˆμš”, 그건 μ œκ°€ 가지고 μžˆλŠ” 것과 λ˜‘κ°™μŠ΅λ‹ˆλ‹€. μ €μ—κ²ŒλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. πŸ€·β€β™‚ 도움이 λ˜λŠ” 경우 제 섀정에 λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό μ•Œλ €λ“œλ¦΄ 수 μžˆμŠ΅λ‹ˆλ‹€.

Win10 v10.0.18362 λΉŒλ“œ 18362
Node.js v12.14.0
SQL μ„œλ²„ v13.0.1711.0

였, 당신은 Node 2.xxλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ½€ 였래된 κ²ƒμž…λ‹ˆλ‹€. TediousλŠ” Node v 6.x 이상을 μ§€μ›ν•˜λ©° 곧 Node 6.x에 λŒ€ν•œ 지원도 쀑단할 μ˜ˆμ •μž…λ‹ˆλ‹€. λ…Έλ“œ 버전이 λ„ˆλ¬΄ μ˜€λž˜λ˜μ–΄μ„œ λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

λ…Έλ“œ 버전 8, 10 λ˜λŠ” 12μ—μ„œ λ™μΌν•œ ν…ŒμŠ€νŠΈλ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” ν™˜κ²½μ΄ μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” 그것이 νš¨κ³Όκ°€ μžˆμ„ 것이라고 μƒκ°ν•œλ‹€.

@IanChokS 볡사/λΆ™μ—¬λ„£κΈ°κ°€ 잘λͺ»λ˜μ—ˆμŠ΅λ‹ˆλ‹€. v12.14.0μž…λ‹ˆλ‹€. 방금 λŒ“κΈ€ μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.

였 헐. 흠 μž¬λ―Έμžˆλ„€μš” πŸ€” μ™œ λ‹Ήμ‹ μ˜ 말이 μ •μ§ν•˜μ§€ μ•Šμ€μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. μ§€λ£¨ν•œ μ΅œμ‹  버전을 μ‚¬μš©ν•˜λŠ” μƒˆλ‘œμš΄ ν…ŒμŠ€νŠΈ ν™˜κ²½μ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆκΉŒ?

@IanChokS 또 λ‹€λ₯Έ μ΄μƒν•œ 점은 .... λ‚˜λŠ” μ§€λ£¨ν•œ μ΅œμ‹  버전을 μ‚¬μš©ν•˜κ³  μžˆλ‹€κ³  ν™•μ‹ ν–ˆμŠ΅λ‹ˆλ‹€. 말 κ·ΈλŒ€λ‘œ npmμ—μ„œ μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. κ·€ν•˜μ˜ μ˜κ²¬μ€ μ €λ₯Ό λ‹€μ‹œ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€. npm install tedious ν•˜λ©΄ μ„€μΉ˜λœ 버전이 8.0.1μž„μ„ μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜μ§€λ§Œ npm tedious -v ν•˜λ©΄ v6.13.6이 λ‚˜μ˜΅λ‹ˆλ‹€. λ‹€λ₯Έ νŒ¨ν‚€μ§€μ— λŒ€ν•œ 쒅속성이 μ•„λ‹Œμ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ κΉ¨λ—ν•œ ν™˜κ²½μ—μ„œ 이것을 μ‹œλ„ν–ˆμ§€λ§Œ μ•„λ‹ˆμ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” κΉ¨λ—ν•œ λΉŒλ“œμ—μ„œ 같은 λŒ€λ‹΅μ„ μ–»μŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ μ΅œμ‹  버전을 μ‚¬μš© 쀑이라고 λ§μ”€λ“œλ¦¬κ³  μ‹Άμ§€λ§Œ μ†”μ§νžˆ μ–΄λ–€ 닡변을 λ―Ώμ–΄μ•Ό 할지 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @snekxerλ‹˜ , μ™œ 이 λ¬Έμ œκ°€ λ°œμƒν•˜λŠ”μ§€ μ•Œμ•„λƒˆμŠ΅λ‹ˆλ‹€. "nvarchar.js"λΌλŠ” "\lib\data-types" μ•„λž˜μ˜ μ €μž₯μ†Œμ—μ„œ νŒŒμΌμ„ ν™•μΈν•˜λŠ” 데 도움을 쀄 수 μžˆμŠ΅λ‹ˆκΉŒ? "writeParameterData: function writeParameterData(buffer, parameter, options, cb)"λΌλŠ” ν•¨μˆ˜κ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. ν•΄λ‹Ή ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ cb ν•¨μˆ˜κ°€ μžˆμŠ΅λ‹ˆκΉŒ? 그것이 당신이 μš°λ¦¬μ—κ²Œ 보여쀀 였λ₯˜λ₯Ό 얻은 μ΄μœ μž…λ‹ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄ μ΅œμ‹  Tedious μ„€μ •μœΌλ‘œ μ‹€ν–‰ν•˜μ§€ λͺ»ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 λ³€κ²½ 사항은 μ–Όλ§ˆ 전에 λ°œμƒν–ˆμœΌλ©° μ΅œμ‹  버전 8.0.1μ—μ„œ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

컴퓨터에 두 가지 λ²„μ „μ˜ Tediousκ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ‚˜λŠ” λͺ…λ Ή ν”„λ‘¬ν”„νŠΈμ—μ„œ μ „μ—­μ μœΌλ‘œ NPM μ„€μΉ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ 이전에 μ–ΈκΈ‰ν•œ λ³€κ²½ 사항이 μ„€μΉ˜λ˜μ§€ μ•Šμ€ 이전 λ²„μ „μ˜ Tediousμž…λ‹ˆλ‹€. 두 λ²ˆμ§ΈλŠ” λ³€κ²½ 사항이 μžˆλŠ” 볡제된 μ§€λ£¨ν•œ μ΅œμ‹  μ €μž₯μ†Œμž…λ‹ˆλ‹€. "const Connection = require('tedious').Connection;"일 λ•Œ 기본적으둜 μ§€λ£¨ν•œ 이전 버전인 μ „μ—­μ μœΌλ‘œ μ„€μΉ˜λœ 지루함을 κ°€μ Έμ˜¬ 수 μžˆμœΌλ―€λ‘œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

"const Connection = require('ious').Connection;"을 λ³€κ²½ν•΄ λ³΄μ‹­μ‹œμ˜€. "const μ—°κ²° = require('./lib/connection');" repo loaction λ‚΄μ—μ„œ "npm run build"λ₯Ό 이미 μ‹€ν–‰ν•œ 경우. λ¬Έμ œκ°€ ν•΄κ²°λ˜λŠ”μ§€ ν™•μΈν•˜μ‹­μ‹œμ˜€.

λ˜ν•œ vscodeλ₯Ό νŽΈμ§‘κΈ°λ‘œ μ‚¬μš©ν•˜λŠ” 경우 "const Connection = require('tedious').Connection" μ€„μ—μ„œ 'tedious' μœ„μ— μ»€μ„œλ₯Ό μ˜¬λ €λ†“μœΌλ©΄ μ „μ—­μ μœΌλ‘œ μ„€μΉ˜λœ Tediousλ₯Ό μ‚¬μš©ν•˜κ³  μžˆλŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€. κ³ κΈ‰ νŽΈμ§‘κΈ°. μ‚¬μš© 쀑인 ν”„λ‘œμ νŠΈμ˜ κ²½λ‘œκ°€ μ»€μ„œ μ•„λž˜μ— λ‚˜νƒ€λ‚©λ‹ˆλ‹€. κΈ°λ³Έ κ²½λ‘œλŠ” 일반적으둜 ""C:/Users//AppData/Local/Microsoft/TypeScript/3.7/node_modules/@types/tedious/index""

도움이 λ˜μ—ˆκΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

@MichaelSun90 λ„€, κ·Έ κΈ°λŠ₯이 μ‹€μ œλ‘œ μ‘΄μž¬ν•©λ‹ˆλ‹€. ν™•μ‹€νžˆ 도움이 λ©λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€!

μœ„μ—μ„œ Ianμ—κ²Œ λ§ν–ˆλ“―μ΄, 그리고 당신이 μ§€μ ν–ˆλ“―μ΄, 두 가지 λ²„μ „μ˜ μ§€λ£¨ν•œ κ²ƒμ²˜λŸΌ λ³΄μ΄μ§€λ§Œ 이것이 μ–΄λ–»κ²Œ 된 것인지 이해가 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. npm은 8.0.1을 μ„€μΉ˜ν–ˆλ‹€κ³  λ§ν•˜μ§€λ§Œ(repoκ°€ ​​npm을 μ„€μΉ˜ λ°©λ²•μœΌλ‘œ μ œκ³΅ν•˜κΈ° λ•Œλ¬Έμ— μ˜λ„ν•œ λŒ€λ‘œ λ³΄μž…λ‹ˆλ‹€) 버전을 확인할 λ•Œ 6.13.6이라고 ν‘œμ‹œλ©λ‹ˆλ‹€. λ‚˜λŠ” repoλ₯Ό λ³΅μ œν•˜κ³  κ±°κΈ°μ—μ„œ 갈 κ²ƒμ΄μ§€λ§Œ npm의 λΆˆμΌμΉ˜μ™€ npmμ—μ„œ μ„€μΉ˜ν•˜λΌλŠ” λͺ…령이 ν˜„μž¬ repo에 μžˆλŠ” 버전을 μ œκ³΅ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” λΆˆν–‰ν•œ 결과에 λŒ€ν•΄ κΆκΈˆν•©λ‹ˆλ‹€.

이 λͺ¨λ“  것이 κΈ€λ‘œλ²Œμ΄ μ•„λ‹Œ λ‘œμ»¬μž„μ„ μΆ”κ°€ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 방금 ν”„λ‘œμ νŠΈμ˜ λ…Έλ“œ λͺ¨λ“ˆμ„ ν™•μΈν•˜μ—¬ ν™•μΈν–ˆμœΌλ©° READMEμ—μ„œλ„ 버전을 8.0.1둜 κΈ°λ‘ν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 당신이 μ œμ•ˆν•œλŒ€λ‘œ 파일의 경둜λ₯Ό μš”κ΅¬ν•˜λ €κ³  μ‹œλ„ν–ˆμ§€λ§Œ 이것은 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μœ„μ˜ κ΄€μ°°κ³Ό ν•¨κ»˜ μ˜λ―Έκ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ΅œμ‹  λ¦΄λ¦¬μŠ€μ—μ„œ npm tedious -v λ₯Ό μ‹€ν–‰ν•˜λ©΄ 6.12.0도 λ‚˜μ˜€λ―€λ‘œ 그것이 문제라고 μƒκ°ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” λ‹Ήμ‹ μ˜ 문제 😒 당신은 μ‚¬μš©ν•  수 μžˆμ–΄μ•Ό 원인을 λͺ¨λ₯΄λŠ” const Connection = require('tedious').Connection; κ·Έλ ‡κ²Œ μ „ν™˜λΏλ§Œ μ•„λ‹ˆλΌ,을 const Connection = require('./lib/connection'); 이상적인 영ꡬ적으둜 μˆ˜μ •ν•˜μ§€ μ•Šμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€

예, λΆ„λͺ…νžˆ npm tedious -vλŠ” μ§€λ£¨ν•˜μ§€ μ•Šμ€ npm 버전을 μ œκ³΅ν•©λ‹ˆλ‹€. νŒ¨ν‚€μ§€ μž κΈˆμ€ 8.0.1도 μ–ΈκΈ‰ν•©λ‹ˆλ‹€. Michael이 μ„€λͺ…ν•œ λ‚΄μš©μ—μ„œ 8.0.1이 μ„€μΉ˜λ˜μ–΄ μžˆμ§€λ§Œ 였래된 μ½”λ“œκ°€ μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆκΉŒ? cb에 κ·Έ κΈ°λŠ₯이 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

흠 package-lock.json을 μ‚­μ œν•˜κ³  npm i λ‹€μ‹œ μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€.

μ™„λ£Œ, μ—¬μ „νžˆ 8.0.1

였λ₯˜κ°€ 계속 λ°œμƒν–ˆμŠ΅λ‹ˆκΉŒ?

λ„€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— 이전 μ½”λ“œμ— 8.0.1이 μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ–΄λ–»κ²Œ 된 건지 μ•Œ 수 μ—†μ§€λ§Œ 이 μ‹œμ μ—μ„œ ν•΄κ²°ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€. npmμ—μ„œ μ„€μΉ˜ν•˜λŠ” 것 외에 λ‹€λ₯Έ 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

git clone [email protected]:tediousjs/tedious.git μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

그런 λ‹€μŒ cd tedious -> npm i -> npm run build -> npm run test-all (ν˜„μž¬ ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν–ˆλŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄)

ν•˜, λ‚˜λŠ” 이미 λ³΅μ œν•  것이라고 μ“°κ³  μžˆμ—ˆμ§€λ§Œ κ±°κΈ°μ—μ„œ μ–΄λ””λ‘œ 가야할지 확신이 μ—†μ—ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€ 해보고 ν•΄κ²°λ˜λŠ”μ§€ ν™•μΈν•˜κ² μŠ΅λ‹ˆλ‹€

npm run build λ₯Ό μ‹€ν–‰ν•œ ν›„ Michael이 μ œμ•ˆν•œ λŒ€λ‘œ const Connection = require('./lib/connection'); 을 μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜λ„ μž‘λ™ν•˜μ§€ μ•ŠμœΌλ©΄ C:/Users//AppData/Local/Microsoft/TypeScript/3.7/node_modules/@types/tedious/index μ‚­μ œν•œ λ‹€μŒ npm i tedious λ‹€μ‹œ μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€.

볡제, λΉŒλ“œ 및 λͺ¨λ‘ μ—¬μ „νžˆ λ™μΌν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

λ‘œμ»¬μ— TypeScriptκ°€ μ—†μŠ΅λ‹ˆλ‹€. 만일의 κ²½μš°μ— λŒ€λΉ„ν•˜μ—¬ LocalLow 및 Roaming도 ν™•μΈν–ˆμ§€λ§Œ 아무 것도 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

@MichaelSun90 , 당신은 μ•žμ—μ„œ μ–ΈκΈ‰ν–ˆμŠ΅λ‹ˆλ‹€:

"writeParameterData: function writeParameterData(buffer, parameter, options, cb)"λΌλŠ” ν•¨μˆ˜κ°€ μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. ν•΄λ‹Ή ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‘œ cb ν•¨μˆ˜κ°€ μžˆμŠ΅λ‹ˆκΉŒ? 그것이 당신이 μš°λ¦¬μ—κ²Œ 보여쀀 였λ₯˜λ₯Ό 얻은 μ΄μœ μž…λ‹ˆλ‹€.
κ·Έλ ‡λ‹€λ©΄ μ΅œμ‹  Tedious μ„€μ •μœΌλ‘œ μ‹€ν–‰ν•˜μ§€ λͺ»ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 λ³€κ²½ 사항은 μ–Όλ§ˆ 전에 λ°œμƒν–ˆμœΌλ©° μ΅œμ‹  버전 8.0.1μ—μ„œ ν™•μΈν–ˆμŠ΅λ‹ˆλ‹€.

이것은 ν˜„μž¬ 버전에 cb λ§€κ°œλ³€μˆ˜κ°€ μ—†μ–΄μ•Ό 함을 μ˜λ―Έν•©λ‹ˆκΉŒ? κ·Έλ ‡λ‹€λ©΄ GitHubμ—μ„œ 방금 λ³΅μ œν•œ 것이 μ—¬μ „νžˆ μžˆμŠ΅λ‹ˆλ‹€. μ—¬κΈ° λ¦¬ν¬μ§€ν† λ¦¬μ—μ„œ ν•΄λ‹Ή νŒŒμΌμ„ ν™•μΈν–ˆλŠ”λ° νŒŒμΌλ„ μžˆμŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” @snekxer μž…λ‹ˆλ‹€ .
μ΅œμ‹  Tedious 8.0.1μ—λŠ” cb κΈ°λŠ₯이 μžˆμ–΄μ•Ό ν•©λ‹ˆλ‹€. λ…Έλ“œ λͺ¨λ“ˆμ˜ 버전을 ν™•μΈν•˜λ €λ©΄ μ‹€μ œλ‘œ npm의 버전을 λ°˜ν™˜ν•˜λŠ” "npm -v tedious"λ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ‹  Tedious의 버전을 λ°˜ν™˜ν•΄μ•Ό ν•˜λŠ” "npm list tedious"λ₯Ό μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‘œμ»¬μ— TypeScriptκ°€ μ—†μŠ΅λ‹ˆλ‹€.

typescript λŠ” package.json 의 devDependencies에 μžˆμœΌλ―€λ‘œ npm i ν•˜λ©΄ TypeScriptλ₯Ό λ‹€μš΄λ‘œλ“œν•˜μ—¬ Node Modules 폴더에 λ„£μ–΄μ•Ό ν•©λ‹ˆλ‹€... πŸ€”

@snekxer λ₯Ό μ •λ¦¬ν•˜κΈ° μœ„ν•΄ ν˜„μž¬ 이전 λ©”μ‹œμ§€μ—μ„œ μ œκ³΅ν•œ ν…ŒμŠ€νŠΈ 슀크립트λ₯Ό 볡제된 tedious λ₯Ό μ‹€ν–‰ν•˜λ €κ³  ν•©λ‹ˆκΉŒ?

@MichaelSun90 이 μ΄ν•΄ν–ˆκ³ , λͺ…ν™•νžˆ ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€. cbλŠ” λ‚΄κ°€ ν™•μΈν•œ λͺ¨λ“  ν•­λͺ©μ— ν¬ν•¨λ˜μ–΄ μžˆμœΌλ―€λ‘œ μ΄μ „μ—λŠ” λ¬Έμ œκ°€ λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ €λŠ” ν˜„μž¬ 볡제된 λ¦¬ν¬μ§€ν† λ¦¬μ—μ„œ μ‹€ν–‰ 쀑이며 μ΄μ „μ—λŠ” npm μ„€μΉ˜μ—μ„œ μ‹€ν–‰ μ€‘μ΄μ—ˆμŠ΅λ‹ˆλ‹€. λ‘˜ λ‹€ 같은 였λ₯˜λ₯Ό λ³΄μ—¬μ€λ‹ˆλ‹€.

@IanChokS TypeScriptλŠ” repo λ³΅μ œμ™€ npm μ„€μΉ˜ λͺ¨λ‘μ—μ„œ λ‚΄ λ…Έλ“œ λͺ¨λ“ˆμ—λ„ ν‘œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

node_modules 및 package-lock.json ν•˜κ³  npm i λ‹€μ‹œ μ‹€ν–‰ν•©λ‹ˆλ‹€.


https://github.com/npm/npm/issues/17282

저도 이 함정에 빠쑌고 κ²°κ΅­ ν˜„μž¬ μ‰˜ μ„Έμ…˜μ—μ„œ NODE_ENVκ°€ ν”„λ‘œλ•μ…˜μœΌλ‘œ μ„€μ •λ˜μ—ˆμŒμ„ μ•Œκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‚΄ μ…Έ μ„Έμ…˜μ„ λ‹«κ³  μƒˆ μ„Έμ…˜μ„ μ‹œμž‘ν•˜λ©΄ μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ ν™˜κ²½ λ³€μˆ˜μ— NODE_ENV=production을 μΆ”κ°€ν–ˆμœΌλ―€λ‘œ node_modules에 devDependenciesλ₯Ό μ„€μΉ˜ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 그것을 μ œκ±°ν•˜κ³  μ§€κΈˆμ€ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

"λ˜ν•œ NODE_ENVλ₯Ό ν”„λ‘œλ•μ…˜μœΌλ‘œ μ„€μ •ν–ˆλŠ”λ° μ΄λŸ¬ν•œ 이유둜 npm install λͺ…λ ΉμœΌλ‘œ package-lock.json 파일과 node_modules 폴더λ₯Ό μ‚­μ œν•΄λ„ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. μ •μƒμ μœΌλ‘œ μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€. κ°μ‚¬ν•©λ‹ˆλ‹€."

@snekxer , μ„€μΉ˜λœ μ§€λ£¨ν•œ μŠ€ν¬λ¦½νŠΈμ— λŒ€ν•΄ 슀크립트λ₯Ό μ‹€ν–‰ν•˜λ €λŠ” 경우 λ‹¨κ³„λŠ” λ‹€μŒκ³Ό κ°™μ•„μ•Ό ν•©λ‹ˆλ‹€.

  1. μ–΄λ””μ—μ„œλ‚˜ cmd ν”„λ‘¬ν”„νŠΈλ₯Ό μ—΄κ³  "npm install tedious"λ₯Ό μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€. 이것은 8.0.1을 μ„€μΉ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. "npm list tedious"λ₯Ό μ‹€ν–‰ν•˜μ—¬ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 그런 λ‹€μŒ μœ„μ— 뢙여넣은 κ·ΈλŒ€λ‘œ 슀크립트λ₯Ό μ‹€ν–‰ν•˜μ‹­μ‹œμ˜€. "const Connection = require('tedious').Connection;" 쀄 μœ μ§€ λ˜‘κ°™λ‹€. 이것은 μž‘λ™ν•΄μ•Όν•©λ‹ˆλ‹€.

볡제된 μ €μž₯μ†Œμ— λŒ€ν•΄ 슀크립트λ₯Ό μ‹€ν–‰ν•˜λ €λŠ” 경우:

  1. Ian이 λ§ν–ˆλ“―μ΄ repoλ₯Ό λ³΅μ œν•œ ν›„ "npm i", "npm run build"λ₯Ό μ‹€ν–‰ν•˜μ—¬ repo에 lib 폴더λ₯Ό 생성해야 ν•©λ‹ˆλ‹€.
    image
  2. 그런 λ‹€μŒ ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ "const Connection = require('./lib/connection')" 쀄을 μˆ˜μ •ν–ˆμŠ΅λ‹ˆλ‹€.

이 방법 쀑 ν•˜λ‚˜κ°€ λ‹€λ₯΄κ²Œ μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•˜λ €λ©΄ λ‘˜ λ‹€ μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ¬Έμ œκ°€ cb ν•¨μˆ˜μ—μ„œ λ°œμƒν•œλ‹€κ³  ν™•μ‹ ν•©λ‹ˆλ‹€.
"connection.ts"μ—λŠ” "getdata"λΌλŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ "makeRequest" ν•¨μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. 이 ν•¨μˆ˜λŠ” κ²°κ΅­ cb ν•¨μˆ˜λ₯Ό ν¬ν•¨ν•˜λŠ” "rpcrequest-payload.ts"μ—μ„œ "__writeParameterData" ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•©λ‹ˆλ‹€. cbκ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠμœΌλ©΄ ν”„λ‘œκ·Έλž¨μ΄ κ±°κΈ°μ—μ„œ λ©ˆμΆ”κ³  μ‹œκ°„ μ΄ˆκ³Όκ°€ λ°œμƒν•©λ‹ˆλ‹€.

@IanChokS node_modules 및 package-

@MichaelSun90 예, λ‘˜ λ‹€ μ‹œλ„ν–ˆλŠ”λ° 방법이 λ‘˜ λ‹€ λ™μΌν•˜κ²Œ μž‘λ™ν•©λ‹ˆλ‹€. 같은 였λ₯˜μž…λ‹ˆλ‹€. λ‘˜ λ‹€ 잘 μ—°κ²°ν•  수 μžˆμ§€λ§Œ λ¬Έμ œλŠ” 맀개 λ³€μˆ˜μ—λ§Œ μžˆμŠ΅λ‹ˆλ‹€. λ§€κ°œλ³€μˆ˜λ₯Ό μ œμ™Έν•˜λ©΄ μ „ν˜€ λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€(λ‹€μ‹œ λ§ν•˜μ§€λ§Œ λ‘˜ λ‹€).

image

@snekxerλ‹˜ , 디버깅에 μ–΄λ–€ νŽΈμ§‘κΈ°λ₯Ό μ‚¬μš©ν•˜κ³  κ³„μ‹­λ‹ˆκΉŒ? VScodeλŠ” λ‚΄κ°€ μ•„λŠ” μœ μΌν•œ μ˜΅μ…˜μ΄κΈ° λ•Œλ¬Έμ— 선택 μ‚¬ν•­μž…λ‹ˆλ‹€. μ‚¬μš© μ€‘μ΄κ±°λ‚˜ μ‹œλ„ν•˜κ³  μ‹Άλ‹€λ©΄ μ½”λ“œλ₯Ό λ””λ²„κ·Έν•˜λŠ” 것이 μ•½κ°„ 도움이 될 수 μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” ν˜„μž¬ 섀정을 κ³΅μœ ν•˜μ—¬ μ™œ 이런 일이 λ°œμƒν•˜λŠ”μ§€ 쑰사할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” λ‹€μŒμ—μ„œ 쀑단 점을 μ„€μ •ν•  κ²ƒμž…λ‹ˆλ‹€ :

lib/src 폴더 μ•„λž˜μ˜ connection.js: "makeRequest(request, packetType, payload)" μ•„λž˜μ˜ "payload.getData"
image
rpcrequest-payload.ts lib/src 폴더 : getData, _writeParameterData, writeParameterData μ•„λž˜
_writeParameterData
image
image
image
image

writeParameterDataλŠ” 데이터 μœ ν˜•μ— 따라 λ‹€λ¦…λ‹ˆλ‹€.
λ‹€μŒμ€ λ§€κ°œλ³€μˆ˜μ˜ 데이터 μœ ν˜•μ— 따라 λ‹€λ₯΄λ©° ν•΄λ‹Ή 데이터 μœ ν˜•μ˜ writeParameterData둜 μ΄λ™ν•©λ‹ˆλ‹€.
예λ₯Ό λ“€μ–΄:

lib\data-types\int.js μ•„λž˜μ˜ int.js: writeParameterData: function writeParameterData(buffer, parameter, _options, cb)
image

이 cbλŠ” 쿼리가 μ€‘λ‹¨λ˜κ³  μ‹œκ°„ μ΄ˆκ³Όλ˜λŠ” μ΄μœ μž…λ‹ˆλ‹€.

@snekxer @MichaelSun90 @IanChokS

더 일찍 μ•Œλ €λ“œλ¦¬μ§€ λͺ»ν•΄ μ£„μ†‘ν•©λ‹ˆλ‹€. ν•˜μ§€λ§Œ writeParameterData 에 λŒ€ν•΄ μ˜€ν•΄λ₯Ό ν•˜μ‹  것 κ°™μŠ΅λ‹ˆλ‹€. πŸ˜“ λ¬Όλ‘ , tedious λ²„μ „μ˜ μ½”λ“œκ°€ 엉망이고 일뢀 νŒŒμΌμ€ ν•œ λ²„μ „μ—μ„œ κ°€μ Έμ˜€κ³  λ‹€λ₯Έ νŒŒμΌμ€ λ‹€λ₯Έ λ²„μ „μ—μ„œ κ°€μ Έμ˜€κΈ° λ•Œλ¬Έμ— 콜백 λ§€κ°œλ³€μˆ˜κ°€ ν˜ΈμΆœλ˜μ§€ μ•ŠμœΌλ©΄ λΆ„λͺ…νžˆ μž‘λ™ν•˜μ§€ μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ λͺ‡ 번 μ–ΈκΈ‰ν–ˆλ“―μ΄ npm을 톡해 μ„€μΉ˜ν–ˆκΈ° λ•Œλ¬Έμ— μ„€μΉ˜λœ λ²„μ „μ—λŠ” "λ‚΄λΆ€μ μœΌλ‘œ" μΌκ΄€λœ μ½”λ“œκ°€ μžˆμ–΄μ•Ό ν•˜λ©° λ¬Έμ œκ°€ ν˜Όλ™μ—μ„œ λΉ„λ‘―λœ 것인지 μ˜μ‹¬λ©λ‹ˆλ‹€.

제 생각에 더 ν₯미둜운 것은 κ·€ν•˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚΄νŽ΄λ³΄λŠ” κ²ƒμž…λ‹ˆλ‹€. 둜컬 λ°μ΄ν„°λ² μ΄μŠ€μ— μ—°κ²°ν•œλ‹€κ³  λ§μ”€ν•˜μ‹  것 κ°™μ€λ°μš”? SQL Server Management Studio λ˜λŠ” λ‹€λ₯Έ 도ꡬλ₯Ό 톡해 μ—°κ²°ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? SQL Server Management Studioλ₯Ό 톡해 λ™μΌν•œ λ°μ΄ν„°λ² μ΄μŠ€ 쿼리λ₯Ό μ‹€ν–‰ν•˜λŠ” 경우 응닡이 λ‹€μ‹œ μ˜€λŠ” 데 μ–Όλ§ˆλ‚˜ κ±Έλ¦½λ‹ˆκΉŒ?

tedious μ—λŠ” μš”μ²­ μ‹œκ°„ 초과 μ²˜λ¦¬μ— λŒ€ν•œ 기본값이 μžˆμŠ΅λ‹ˆλ‹€. μš”μ²­μ΄ 15초 후에 μ™„λ£Œλ˜μ§€ μ•ŠμœΌλ©΄ μ‹œκ°„ 초과되고 μ‹œκ°„ 초과둜 인해 μ„œλ²„μ— μ·¨μ†Œ μ•Œλ¦Όμ„ 보내 쿼리λ₯Ό μ·¨μ†Œν•˜λ €κ³  μ‹œλ„ν•©λ‹ˆλ‹€. . ν•΄λ‹Ή μ·¨μ†Œκ°€ ν™•μΈλ˜μ§€ μ•ŠμœΌλ©΄ λ°œμƒν•œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€. 즉, 쿼리가 λ°μ΄ν„°λ² μ΄μŠ€λ‘œ μ „μ†‘λ˜μ§€λ§Œ 15초 후에 λͺ¨λ“  데이터가 λ°˜ν™˜λ˜λŠ” 것은 μ•„λ‹ˆλ―€λ‘œ 쿼리가 μ·¨μ†Œλ˜μ§€λ§Œ μ·¨μ†Œλ„ ν™•μΈλ˜μ§€ μ•Šμ•„ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

슀크립트λ₯Ό μ‹€ν–‰ν•  λ•Œ connected 둜그 좜λ ₯이 λ³΄μ΄λ‚˜μš”? λͺ¨λ“  둜그 좜λ ₯을 뢙여넣을 수 μžˆμŠ΅λ‹ˆκΉŒ?

쿼리λ₯Ό SELECT 1 와 같은 μ•„μ£Ό 기본적인 κ²ƒμœΌλ‘œ λ³€κ²½ν•˜λ©΄ λ™μΌν•œ λ¬Έμ œκ°€ ν‘œμ‹œλ©λ‹ˆκΉŒ?

μ•ˆλ…•ν•˜μ„Έμš” @arthurschreiber ; 예, 문제 없이 SQL Server Management Studio에 μ—°κ²°ν•˜κ³  μ‹€ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μΏΌλ¦¬λŠ” μ•½ 1μ΄ˆκ°€ κ±Έλ¦½λ‹ˆλ‹€. 사싀 WHERE 절이 μžˆλ“  μ—†λ“  λ‚΄κ°€ μˆ˜ν–‰ν•˜λŠ” λͺ¨λ“  μΏΌλ¦¬λŠ” μ œλŒ€λ‘œ μž‘λ™ν•˜κ³  1μ΄ˆκ°€ κ±Έλ¦½λ‹ˆλ‹€.

λ‚˜λŠ” 전체 좜λ ₯을 μ–»κΈ° μœ„ν•΄ 그것을 λ‹€μ‹œ μ‹€ν–‰ν•˜λ €κ³  ν–ˆμ§€λ§Œ(λ‚˜λŠ” 밖에 μžˆμ—ˆκ³  이제 겨우 일주일 λ§Œμ— λ‚΄ 컴퓨터λ₯Ό λ§Œμ§€κ³  μžˆλ‹€) λΆ„λͺ…νžˆ μ§€κΈˆμ€ μž‘λ™ν•œλ‹€??? 무슨 일이 μΌμ–΄λ‚˜κ³  μžˆλŠ”μ§€ λͺ¨λ₯΄κ² λ‹€ πŸ˜• 아무 것도 λ³€κ²½ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ μ§€κΈˆμ€ μž‘λ™ν•©λ‹ˆκΉŒ? 개발 ν™˜κ²½κ³Ό μ•±μ—μ„œ ν…ŒμŠ€νŠΈλ˜μ—ˆμœΌλ©° μ§€κΈˆμ€ λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€. 무슨 일이 μžˆμ—ˆλŠ”μ§€ λͺ¨λ₯΄μ§€λ§Œ μ–΄μ¨Œλ“  κ°μ‚¬ν•©λ‹ˆλ‹€!

SELECT * FROM table WHERE column=something κ²½μš°μ—λ§Œ λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ SELECT * FROM table ν•˜λ©΄ λ¬Έμ œκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

컴퓨터λ₯Ό λ‹€μ‹œ μ‹œμž‘ν•˜κΈ°λ§Œ ν•˜λ©΄ 된 것 κ°™μ•„μš” πŸ˜„
당신이 그것을 μ•Œμ•„λ‚Ό 수 μžˆμ–΄μ„œ κΈ°μ©λ‹ˆλ‹€! πŸ™Œ

@IanChokS κ°€μž₯ 쒋은 점은 λ‹€μ‹œ μ‹œμž‘ν•˜μ§€λ„ μ•Šμ•˜κ³  λ‚΄λ‚΄ μ ˆμ „ λͺ¨λ“œμ— μžˆμ—ˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ•„, 컴퓨터 :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰