Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js mysql无法插入_Javascript_Mysql_Node.js - Fatal编程技术网

Javascript node.js mysql无法插入

Javascript node.js mysql无法插入,javascript,mysql,node.js,Javascript,Mysql,Node.js,我正在使用node.js,使用Faker、下划线、mysql和randy库向web应用程序添加一些测试数据 到目前为止还不错——但在我的一个循环中,mysql调用每次都失败,但它也无法生成任何错误。我有点困惑: var sql = 'SELECT id FROM mytable WHERE 1'; client.query(sql, function(err, rows, fields){ // loop through results _.each(rows, function

我正在使用node.js,使用Faker、下划线、mysql和randy库向web应用程序添加一些测试数据

到目前为止还不错——但在我的一个循环中,mysql调用每次都失败,但它也无法生成任何错误。我有点困惑:

var sql = 'SELECT id FROM mytable WHERE 1';
client.query(sql, function(err, rows, fields){
    // loop through results
    _.each(rows, function (v, i){
        // get the insert id
        var id = v.id; 
        console.log (id); // prints valid ID            
        // generate other data
        var stuff_count = randy.randInt(0,12);
        _(stuff_count).times(function(n){
            var sql = 'INSERT INTO other_table (linked_id, item_id) VALUES ('+id+','+randy.randInt(1,50)+')';
            console.log(sql); // prints sql
            client.query(sql, function(err, rows, fields) {
              console.log(sql); // prints nothing
              if (err){
                console.log(sql); // prints nothing
                throw err; // prints nothing
              }
        });
    });
});

循环逻辑工作正常,它一直运行到sql应该对
其他表执行
插入
——但是跟踪mysql日志不会显示任何影响数据库的内容,并且
客户机内的调试语句都没有。query
块正在打印任何内容,成功或失败。

假设您正在运行这个独立程序,那么您的代码可能在有机会执行插入之前就完成了

将setTimeout(…,10000)放在u(stuff_count).times(…)之后


通过使用().times(),您可以对所有插入进行排队,但不会等待完成。您应该使用控制流库来确保等待所有插入完成。

不要忘记对正在注入SQL的值使用
connection.escape()
。@tadman--谢谢,我在数据为非整数的情况下这样做。这是一个风格点,但您应该尝试摆脱回调地狱:p