2017-06-02 2 views
-1

Ich habe Tabelle 'Kunden'Unhandle Ablehnung Request: Die Umwandlung des Nvarchar-Wert '238998679919674' überschwemmt eine Int-Spalte

enter image description here

und Tisch 'Gespräche'

enter image description here

I bin ziemlich neu in Javascript. Derzeit versuche ich, knex + bookshelf (SQL Server-Datenbank mit langwierigem Treiber) zu verwenden, um diese beiden Tabellen zu verbinden. Ich zerlege diese zwei Tabellen in zwei Modellen und rufe sie von einem Router (ich benutze Knoten js).

conversation.js

customer: function() { 
    return this.belongsTo('Customer','uniqueid'); 
} 

customer.js

conversation: function(){ 
    return this.hasMany('Conversation','customer_id'); 
} 

Wenn ich versuche, die Tabellen

Customer.fetchAll({withRelated:['conversation'], debug: true}).then(function(data{ 
    console.log('data : '+data); 
}); 

Leider bekomme ich, sich die immer den Fehler:

Unhandled rejection RequestError: The conversion of the nvarchar value '238998679919674' overflowed an int column.

ich gespannt, wo der Fehler kommen aus? da der Typ der Spalte nvarchar ist, nicht int.

Das das Ergebnis des Debug ist

{ method: 'select', 
    options: {}, 
    timeout: false, 
    cancelOnTimeout: false, 
    bindings: [], 
    __knexQueryUid: '7befdc84-c66c-4278-b88c-d53a306c36db', 
    sql: 'select [customers].* from [customers]' } 
GET /ticket/list 500 16 - 21.899 ms 
{ method: 'select', 
    options: {}, 
    timeout: false, 
    cancelOnTimeout: false, 
    bindings: 
    [ 1, 
    2, 
    3, 
    4, 
    5, 
    6, 
    7, 
    8, 
    9, 
    10, 
    11, 
    12, 
    13, 
    14, 
    15, 
    16, 
    17, 
    18, 
    19, 
    20, 
    21, 
    22, 
    23, 
    24, 
    25, 
    26, 
    27, 
    28, 
    29, 
    30, 
    31, 
    32, 
    33, 
    34, 
    35, 
    36, 
    37, 
    38, 
    39, 
    40, 
    41, 
    42, 
    43, 
    44, 
    45, 
    46, 
    47, 
    48, 
    49, 
    50 ], 
    __knexQueryUid: '29ca9239-b7af-4765-95b1-836ed2c570ce', 
    sql: 'select [conversations].* from [conversations] where [conversations].[customer_id] in (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' } 
+0

Sie können Ihren Code debuggen und eine schlechte Zeile finden –

+0

Ich bearbeitet den Beitrag und legte das Debug-Ergebnis – Akmal

Antwort

0

Sie versuchen, zwei Tabellen auf Kunden-ID zu verbinden, nicht wahr? In der ersten Tabelle (Kunden) ist id int, in der zweiten customer_id ist nvarchar. Wenn Sie int an nvarchar anfügen, wird der nvarchar in int konvertiert, aber der maximal zulässige Wert für den Datentyp int ist 2.147.483.647 und die Spalte conversations.customer_id hat den Wert '238998679919674', der nicht in int konvertiert werden kann. Das ist der Fehler. Sie können versuchen, Ihren Tisch auf nicht

customers.id = conversations.customer_id 

aber auf

cast(customers.id as nvarchar(255) = conversations.customer_id 

beitreten, aber es ist ein logischer Fehler: nicht alle conversations.customer_id ein Korrespondent customers.id haben, so vielleicht die Verbindung ist überhaupt nicht korrekt

Verwandte Themen