鍍金池/ 問答/ 數(shù)據(jù)庫問答
心癌 回答

沒看懂你要啥...?

這是你想要的么?

insert into table001 (id, p_id, name, length)  values
(110,1,'網(wǎng)絡銷售',10),
(111,1,'區(qū)域銷售',11),
(112,1,'渠道專員',12),
(113,1,'渠道經(jīng)理/總監(jiān)',13),
(114,1,'客戶經(jīng)理/主管',14),
(115,1,'大客戶經(jīng)理',15),
(116,1,'團購業(yè)務員/經(jīng)理',16),
(117,1,'會籍顧問',17),
(201,2,'客服專員/助理',18),
(202,2,'客服經(jīng)理/主管',19),
(203,2,'客服總監(jiān)',20);

EDITED

上面的sql是通過下面的腳本生成的

var arrays = new Array();

var sorts= new Array();
var jobs="銷售 銷售代表 銷售助理 銷售經(jīng)理/主管 銷售總監(jiān) 電話銷售 銷售支持 汽車銷售 醫(yī)藥代表 醫(yī)療器械銷售 網(wǎng)絡銷售 區(qū)域銷售 渠道專員 渠道經(jīng)理/總監(jiān) 客戶經(jīng)理/主管 大客戶經(jīng)理 團購業(yè)務員/經(jīng)理 會籍顧問\n"+
"客服 客服專員/助理 客服經(jīng)理/主管 客服總監(jiān) 售前/售后服務 電話客服 客戶關系管理\n"+
"貿(mào)易/采購 外貿(mào)專員/助理 外貿(mào)經(jīng)理/主管 采購員 采購助理 采購經(jīng)理/總監(jiān) 報關員 商務專員/經(jīng)理 買手\n"+
"超市/百貨/零售 店員/營業(yè)員 收銀員 促銷/導購員 理貨員/陳列員 防損員/內保 店長/賣場經(jīng)理 招商經(jīng)理/主管 奢侈品業(yè)務 品類管理 食品加工/處理 督導\n"+
"市場/媒介/公關 市場專員/助理 市場經(jīng)理/總監(jiān) 市場拓展 市場調研 市場策劃 媒介專員/助理 媒介經(jīng)理/主管 會務會展專員/經(jīng)理 品牌專員/經(jīng)理 公關專員/助理 公關經(jīng)理/主管 企劃經(jīng)理/主管\n"+
"廣告/會展/咨詢 廣告文案 創(chuàng)意指導/總監(jiān) 廣告設計/制作 廣告創(chuàng)意 媒介策劃/管理 會展策劃/設計 婚禮策劃師 咨詢顧問 咨詢經(jīng)理/主管 客戶主管/專員 企業(yè)策劃\n"+
"美術/設計/創(chuàng)意 美編/美術設計 服裝設計 家具/家居用品設計 平面設計 美術指導 店面/陳列/展覽設計 工藝/珠寶設計 多媒體/動畫設計 產(chǎn)品/包裝設計 裝修裝潢設計 CAD設計/制圖";

var sa = jobs.split("\n");

var k=0;
for(var j=0; j<sa.length; j++){
    names = sa[j].split(" ");
    sorts[j] = new Array(""+(j+1), names[0]);   

    for(var m=0; m<names.length-1;m++)
    arrays[k++] = new Array(""+(j+1),(j+1)*100+(m+1), names[m+1])

}


function makesql(arr){
        
        var a;       
        console.log("insert into table001 (id, p_id, name, length)  values");
        for(var i=0; i<arr.length; i++){//a為index
            item =arr[i];
            var parentid=0;
            var name=item[1];
            var classid=item[0];

            if(item.length == 3){
              parentid= item[0];
              classid=item[1];
              name =item[2];
            } 
            console.log("("+classid+","+parentid+",'"+name+"',"+(i+1)+")"+(i==arr.length-1?";":","));
        }
    
}

//console.log("delete from table001;");

makesql(sorts);
makesql(arrays);

不需要什么開發(fā)環(huán)境, 打開瀏覽器->按F12打開開發(fā)者工具-> 切到console ->粘貼->按Enter. SQL就生成了.

當然,存成文件用nodejs執(zhí)行更好一些.

貓小柒 回答

jdbc URL里加上rewriteBatchedStatements=true這個參數(shù)就可以了。

或者,在程序寫成一條INSERT插入多行數(shù)據(jù)的形式,不用依賴jdbc的batch功能,這樣是最靠譜的,也適合移植到MySQL以外的數(shù)據(jù)庫。

孤酒 回答

mongorestore是個獨立的可執(zhí)行程序,請不要在進入mongodb的命令行狀態(tài)中執(zhí)行它!
單獨打開一個命令行窗口執(zhí)行你的命令即可。

怪痞 回答

不知道你的db是怎么設置的,打印一下執(zhí)行的sql語句.

看你的數(shù)據(jù)庫設置應該是沒有問題的。因為我在使用gorm的時候是開啟了數(shù)據(jù)庫連接池,因此我沒有在一個地方專門對db進行close。我不知道你代碼里面db的生命周期是怎么樣的。建議你在調試環(huán)境中使用db = db.Debug(),可以打印要執(zhí)行的sql語句。此外,還可以在你的代碼中通過err := db.Save(&like).Error, 檢出err查看你程序的執(zhí)行是否有問題.

======補充================

package database

var db *gorm.DB

func init() {
    var dbSrc = "username:password.@(127.0.0.1:3309)/gotest?charset=utf8&parseTime=True&loc=Local"
    newDb, err := gorm.Open("mysql", dbSrc)
    if err != nil {
        panic(err)
    }

    db = newDb

    sqlDb := db.DB()
    sqlDb.SetMaxOpenConns(100)
    sqlDb.SetMaxIdleConns(15)

    if gin.IsDebugging() {
        db = db.Debug()
    }
}

func DB() *gorm.DB {
    return db.New()
}

一般情況下我會將數(shù)據(jù)庫的初始化工作放到一個init中,然后在包含main函數(shù)的文件中導入這個包(package),這里就舉個例子:

import _ "database"

這樣在程序啟動的時候, 就會會自動初始化db(而且不用擔心會初始化多次)。然后在需要使用的地方只需要調用

db := database.DB()

這樣可以拿到一個db對象。

嘟尛嘴 回答

1、你的數(shù)據(jù)是什么量級,是MB,GB,PB?
2、你數(shù)據(jù)爬下來的存儲方式,是存在文件里還是還是存放到數(shù)據(jù)庫
3、你準備以什么方式把數(shù)據(jù)開放給對方,提供web api,還是提供ftp,還是提供數(shù)據(jù)庫訪問權限
你思考過這些問題,自然就知道該怎么做和該去研究哪些資料了

兮顏 回答
//文章的  評論的改一下表就好了
select tb_user.* from tb_article join tb_user on tb_user.id=tb_article.id order by tb_article.create_time desc limit 5;
//一起?效率...就沒怎么考慮233.....
SELECT
    a.uid,
    username
FROM
    (
        (
            SELECT
                `uid`,
                `create_time` AS `time`
            FROM
                tb_article
        )
        UNION ALL
            (
                SELECT
                    `uid`,
                    `create_time` AS time
                FROM
                    tb_comment
            )
    ) AS a
JOIN tb_userAS b ON a.uid = b.uid
GROUP BY
    a.uid
ORDER BY
    a.time DESC
LIMIT 5
空痕 回答

寫上端口!命令行默認3306,sequel pro并不會給你默認

艷骨 回答

所以是查詢的sql語句有問題了,你這應該分成兩個查詢:一個查詢最外面的那個while的數(shù)據(jù),一個查詢藍色圖片的while的數(shù)據(jù)
查詢最外層的數(shù)據(jù)是一個List,然后在里面一個字段存圖片的List信息
-- 不懂PHP ,但是意思相通

情未了 回答

1、注意看數(shù)字8的表頭key_len,說的是使用索引字段的長度。
2、Using tempory, Using filesort是受order by語句的影響,你可以去掉order by再看一下執(zhí)行計劃。
3、eo表使用覆蓋索引是合理的,因為索引已經(jīng)包含了查詢所需的所有數(shù)據(jù)。

短嘆 回答

事務會話期間能不能看到改動和事務的隔離級別有關.

參見官方文檔:
https://dev.mysql.com/doc/ref...

默認情況下是REPEATABLE READ, 可重復讀,即在事務期間的多次讀取返回同樣的結果.

BTW:
mysql定義的四種隔離級別沒有 repetable commit這個.

官網(wǎng)上只有

level:

   REPEATABLE READ
   READ COMMITTED
   READ UNCOMMITTED
   SERIALIZABLE

澐染 回答

clipboard.png

我這個是可以的。flask-sqlachemy遷移只能添加字段,不能修改和刪除的??聪履愕膍odels.py中表和數(shù)據(jù)庫表是否一致。

有你在 回答

1,本地能ping到這臺主機嗎?
2,本地能telnet通這臺主機的3306端口嗎?
3,把bind-address = 127.0.0.1換成bind-address = 0.0.0.0試試呢?

久舊酒 回答

分層設計
路由和模型之間加一層控制器來處理業(yè)務邏輯

//以文章為例,文章控制器
'use strict';
import ArticleModel from '../../models/article';
class Article {
    constructor() {
      //...
    }
    async getArticleById(req, res, next) {
        //查找
       let article = await ArticleModel.findOne(...);
    }

    async addArticle(req, res, next) {
       //新增
    }
    // 更新文章需要更新文章評論數(shù)
    // 刪除文章
    async deleteArticle(req, res, next) {
        //刪除
    }
    // 更新文章
    async updateArticle(req, res, next) {
        // 更新
        //這里可以先查找在更新,多次調用
    }
}
export default new Article();
//文章路由
'use strict';
import express from 'express';
import Article from '../controllers/blog/article';
const router = express.Router();
router.get('/article/:id',  Article.getArticleById);
router.post('/article/add',  Article.addArticle);
router.post('/article/update',  Article.updateArticle);
router.post('/article/delete',  Article.deleteArticle);
export default router

我之前看到的一個koa+mysql寫的也可以參考下,原理類似
koa-blog

風清揚 回答

不妨 brew install mongodb, 簡單省事,哈哈哈

或者裝個 docker,docker pull mongodb ,不爽就刪了換個鏡像,簡單省心

然后把 對應端口(默認27017吧)expose 出來,用對應語言的驅動就可以使用了。

直接用的話,命令行 mongod, 再起一個界面運行 mongo 就可以使用了 db.getCollection('xxx').find({}) 等等,自己上網(wǎng)找找就有了

情未了 回答

首先,你要確定是你用的MySQL客戶端截斷的,還是MySQL返回時就截斷的?測試方法很簡單:

SELECT LENGTH(GROUP_CONCAT(id)) ...

如果是后者,可以考慮在配置(my.cnf或my.ini)中把group_concat_max_len設得大些,或者每次連接時執(zhí)行SET SESSION group_concat_max_len = 1000000。

情殺 回答

可以用正則轉換
如圖, 點擊一下 "使用正則表達式"
圖片描述

上面輸入([a-z]+)n*替換欄輸入'$1', (包括引號和空格)
最后一個(z)的逗號不好替換, 可以再處理

失魂人 回答

SELECT i.* FROM c_item i, c_item_attr ia WHERE i.item_id = ia.item_id AND ia.attr_id IN (4, 7, 14) GROUP BY i.item_id having count(i.item_id)>2

話寡 回答

在使用golang進行開發(fā)中,數(shù)據(jù)并發(fā)安全是經(jīng)常要考慮到的因素,開發(fā)框架中并不會處理用戶數(shù)據(jù)的并發(fā)安全。從1.9.2版本開始golang也提供了sync.Map并發(fā)安全的封裝類型,此外也可以參考gf框架的并發(fā)安全容器:http://gf.johng.cn/494392