鍍金池/ 問答/ 數(shù)據(jù)庫(kù)問答
  1. 保證數(shù)據(jù)庫(kù)穩(wěn)定(連接數(shù)被池上線限制了,數(shù)據(jù)庫(kù)不會(huì)掛)
  2. 盡量保證應(yīng)用穩(wěn)定(池滿了就新建,應(yīng)用不會(huì)等待,但是如果連接數(shù)過多,數(shù)據(jù)庫(kù)可能掛, 從而導(dǎo)致應(yīng)用掛)
尛曖昧 回答

非常感謝 @sprout 提供的方法,最終產(chǎn)出的代碼大概是這樣的

過客 回答

從異??词莚edis無(wú)法連接導(dǎo)致,超時(shí)java.net.SocketTimeoutException: connect timed out
手動(dòng)檢測(cè)部署應(yīng)用服務(wù)器能否連接redis.

telnet <host> 6379

如果沒telnet,可使用python

$ python
...                                                                                                                                                                                                         
>>> import socket                                                                                                                                                                                                                                                              
>>> conn=socket.create_connection(('<host>',6379))   
>>>                                               //如果沒出現(xiàn)錯(cuò)誤說明可以連接上
骨殘心 回答

基本的思路是,用『后臺(tái)處理隊(duì)列』來處理,python當(dāng)中可以用huey,當(dāng)請(qǐng)求以來,就把任務(wù)放在隊(duì)列當(dāng)中排隊(duì)執(zhí)行,然后直接返回『處理中』這樣的消息給用戶即可,這樣就不會(huì)timeout了,huey會(huì)用到redis,不過不需要你操作原生redis。

希望能幫助到你。

悶騷型 回答
  • 關(guān)于并發(fā),可以參考我之前的回答。
  • 關(guān)于重入,沒具體了解微信支付的接口規(guī)格, 但返回的數(shù)據(jù)里應(yīng)該有一個(gè)唯一鍵。比如交易號(hào)? 這個(gè)作為mongo表的唯一索引。然后在程序里捕獲&處理這個(gè)錯(cuò)誤。
念舊 回答

感謝各位的回答,猜測(cè)是和主題文件損壞有關(guān)的。不過我已經(jīng)轉(zhuǎn)到WordPress了。

別瞎鬧 回答

嘗試把版本改成 5.4 以上再看看。


剛才看了官方文檔發(fā)現(xiàn)了這個(gè) PHP: mysqli_stmt::get_result

Available only with mysqlnd.

并且我自己在官方文檔上找了個(gè)例子試了一下:

Fatal error: Call to undefined method mysqli_stmt::get_result() in ...

出現(xiàn)上面這個(gè)錯(cuò)誤。

貓小柒 回答

Google一下都有現(xiàn)成的:MongoDB Java: Finding objects in Mongo using QueryBuilder $in operator returns nothing

public static void getDocuments(List<Integer> documentIds) {
    BasicDBList docIds = new BasicDBList();
    docIds.addAll(documentIds)
    DBObject inClause = new BasicDBObject("$in", docIds);
    DBObject query = new BasicDBObject("Id", inClause);
    DBCursor dbCursor = mongoRule.getDatabase().getCollection("mycollection").find(query);
    System.out.println(dbCursor == null);
    if (dbCursor != null) {
        while (dbCursor.hasNext()) {
            System.out.println("object -  " + dbCursor.next());
        }
    }
}

我注意到你的_id全是一樣的,所以你是不是已經(jīng)使用$unwind把一個(gè)數(shù)組展開了?

舊言 回答

如果有人正在為這個(gè)問題而掙扎, 下面是修復(fù)程式:

嘗試在您的 mysql 中更改/設(shè)置 wait_timeout my.cnf 設(shè)定檔:

wait_timeout=3600

此設(shè)定檔位於/etc/mysql/my.cnf (Ubuntu/Debian) 和`usr/local/mysql/my.cnf (OSX)。

重新開機(jī) mysql 伺服器, 它應(yīng)該工作。

孤酒 回答

思路: 先查出注冊(cè)用記的類型, 然后再用戶類型的數(shù)組再循環(huán)訂單中所有的商品.

//語(yǔ)句可查出第一列(用戶類型) 最后一列(金額)
select m.uid,a.id,
                    sum((select 
                        sum((select sum(p.num * p.price) from {$pfix}d p where p.oid = o.id)
                    ) as user_amount
                    from {$pfix}c o where o.uid = m.uid)) as user_order_total
                    from {$pfix}b m 
                    JOIN {$pfix}a a ON m.aid = a.id
                    group by a.id
//查出所以訂單的商品類型
select product_id,product_name from {$pfix}d group by product_id
//循環(huán)出上列表格
        foreach ($data as $key => $value) { //AND o.create_time > 1516204800 下單時(shí)間條件
            $userSql = "select o.id from {$pfix}b m 
                        RIGHT JOIN {$pfix}c o ON o.uid = m.uid where m.aid= {$value ['id']} {$where}
            "; //查出用戶類型下所有用戶訂單
            $userData = $model->query($userSql);
            if(!empty($userData)) {
                
                $userWhere = implode(',', array_column($userData, 'id'));
                foreach ($productData as $k => $v) {
                    $amountSql = "select sum(num) as amount_total from {$pfix}d where product_id = {$v ['product_id']} AND oid IN({$userWhere})";
                    $amount = $model->query($amountSql);
                    $amount = $amount [0]['amount_total'];
                    $data [$key]['product'][$v ['product_id']] = array('amount_total' => $amount);
                }
                dump($productData);
            }
        }
任她鬧 回答

可以在定制安裝那里選擇Custom,不要安裝Compass。Compass社區(qū)版可以另行在下載中心自己下載安裝。

瘋子范 回答

都是單表查詢沒什么問題,應(yīng)該這樣處理,你所說的效率無(wú)非是mysql的瓶頸問題,和服務(wù)端的語(yǔ)言沒什么關(guān)系,評(píng)論的話怎么取,這要看你的業(yè)務(wù)了,這里你要注意這么幾點(diǎn)
1、當(dāng)你的翻頁(yè)功能只能一頁(yè)一頁(yè)翻,那么可以取當(dāng)頁(yè)的最后一條數(shù)據(jù)的id,使用where id > last_id 這樣的行級(jí)過濾條件,limit這里只需要 limit page_size就可以了,mysqllimit 有個(gè)問題,就是你如果寫limit 100000 10 它會(huì)把這100000 條數(shù)據(jù)都檢索一遍。這樣寫的好處就是你設(shè)置了一個(gè)過濾條件,那么他其實(shí)只會(huì)檢索你設(shè)置的page_size 的數(shù)據(jù)條數(shù),其次是你可以寫多個(gè)條件。
2、如果你是單條件查詢,那么可以使用子查詢,就是在where 行級(jí)過濾條件里使用 子查詢,比如說 select * from table1 where id > (select id from table1 limit current_num, page_size) limit page_size,這里子查詢走的主鍵索引,所以說速度是很快的。
3、當(dāng)涉及單條件和多條件查詢的時(shí)候,組合索引非常重要,比如 select id from table1 where age > 18, 這里索引會(huì)先走where 條件 再走 id,所以按照組合索引的最左原則,你懂得。
4、之后用 In() 取另一張表的數(shù)據(jù)即可,其實(shí)也就查詢兩次數(shù)據(jù)庫(kù),剩下的交給服務(wù)端處理一下就完事了。
5、能設(shè)置定長(zhǎng)的字段可以盡量設(shè)置為定長(zhǎng)。

還要說一點(diǎn)的是,其實(shí)當(dāng)數(shù)據(jù)量真的很大的時(shí)候,其實(shí)會(huì)用分表,索引表,分段查詢這些東西來做select 操作,有的可能會(huì)用sphinx、Solr 這些全文檢索引擎。你可以取研究研究

巴扎嘿 回答

File "/home/stephen/loading/Oppo/oppo.py", line 718, in <module>
看看這行代碼,錯(cuò)誤報(bào)得很清楚:Column count doesn't match value count at row 1
count列沒有對(duì)應(yīng)count的值

看看你的代碼吧, 沒有代碼很難猜(如果有列命名成count也不太合適)

墨染殤 回答

以我的項(xiàng)目為例——基于 flask 的 CRUD 操作

其中 models.py 里的定義如下(源碼地址:https://github.com/eastossifrage/flask-wtf-crud/blob/basic/app/models.py

class User(db.Model):
    '''Example for crud
    以用戶為例,來展示 CRUD 操作!
    '''
    __tablename__ = 'crud'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), unique=True, index=True)
    email = db.Column(db.String(64), unique=True, index=True)
    status = db.Column(db.Boolean, default=False)
    role = db.Column(db.Boolean, default=False)

    def __repr__(self):
        return '<User %r>' % self.username

根據(jù)你的例子,你的 UserRole 兩個(gè)類中,前者沒有定義 __repr__(self),而后者定義了 __repr__(self) 類,所以造成你的顯示結(jié)果出現(xiàn)了不同的情況。

再者,建議看看資料,定義類的時(shí)候,注意一下 __repr__(self)__str__(self) 兩個(gè)屬性。

簡(jiǎn)單的說__repr__(self)是面向程序員的,而__str__(self)是面向用戶的。

最后,送你個(gè)福利http://blog.csdn.net/luckytanggu/article/details/53649156

念舊 回答
Out of memory: Kill process 21529 (python) score 690 or sacrifice child

你的程序內(nèi)存溢出了,檢查下你的代碼是哪里造成了這個(gè)內(nèi)存溢出

陌離殤 回答

telnet localhost 3306 這個(gè)命令支行不了。