鍍金池/ 問答/ 數(shù)據(jù)庫(kù)問答
敢試 回答
db.<coll>.update({條件}, {$set: {字段}, $setOnInsert: {date: new Date()}}, {upsert: true});

加上$setOnInsert表示只有在插入的時(shí)候才帶這個(gè)字段。跟關(guān)系數(shù)據(jù)庫(kù)不同的是,這個(gè)時(shí)間來自你的應(yīng)用,而不是數(shù)據(jù)庫(kù)加上去的默認(rèn)值。

糖果果 回答

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'db_blog.t2.id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

其實(shí)這錯(cuò)誤說得挺明白了

推測(cè)你服務(wù)器上的Mysql版本是5.7?
mysql 文檔:https://dev.mysql.com/doc/ref...

解決方案一:修改Mysql配置

通過這下面語(yǔ)句disable only_full_group_by。

mysql> set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
mysql> set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

解決方案二:修改你的SQL

select t2.id,t2.typeName,count(t1.id) as blogCount from t_blog t1 right join t_blogType t2 on t1.typeId=t2.id group by t2.typeName order by t2.orderNo;

修改為

SELECT t2.id,
       t2.typeName,
       count(t1.id) AS blogCount
FROM t_blog t1
RIGHT JOIN t_blogType t2 ON t1.typeId=t2.id
GROUP BY t2.typeName,
t2.id
ORDER BY t2.orderNo;

注意改動(dòng),在group by里加了t2.id

六扇門 回答

/data/db是只讀的,無法創(chuàng)建鎖(文件)。
修改下/data/db目錄權(quán)限。
示例: chmod +w -R $(whoami) /data/db

命于你 回答

<=2.2.x的驅(qū)動(dòng)這樣寫沒有問題。如果你沒有給具體版本號(hào),現(xiàn)在會(huì)安裝3.0驅(qū)動(dòng),API已經(jīng)變化了。你可以

  1. 如果沒有準(zhǔn)備好升級(jí),降級(jí)到到2.2驅(qū)動(dòng),修改package.json并重新npm install。
  2. 使用3.0驅(qū)動(dòng),并相應(yīng)修改代碼。樓上所述是正確的,也可以參考文檔:http://mongodb.github.io/node...
不討喜 回答

建議使用官方鏡像,或者mariadb可能是更好的選擇
https://store.docker.com/imag...

命于你 回答

如何優(yōu)化import模塊的輸入方式

在WebStorm中

Live Templates中添加一個(gè)模版,如下圖:

圖1

Abbreviation中鍵入關(guān)鍵字,Description是描述(可選),在Template Text中填入代碼模版。

Template Text 例子,可自行修改

import {$END$} from '$MODULE_VAR$';

應(yīng)用設(shè)置后,在編輯器中鍵入部分關(guān)鍵字,就可以從智能提示中看到剛剛設(shè)定的關(guān)鍵字了,按Tab鍵后,會(huì)出現(xiàn)import {} from '';,光標(biāo)首先會(huì)在單引號(hào)中,輸入完畢后,會(huì)跳轉(zhuǎn)到花括號(hào)中。

圖片描述
圖片描述


在VS Code中

  • Windows: 文件 -> 首選項(xiàng) -> 用戶代碼片段
  • Mac OS: Code -> 首選項(xiàng) -> 用戶代碼片段

打開代碼片段后,會(huì)看到這樣的界面

圖片描述

選擇新建全局代碼片段文件或者指定語(yǔ)言建立,我的習(xí)慣是指定語(yǔ)言,防止污染其他語(yǔ)言的代碼片段

在TypeScript與JavaScript兩種語(yǔ)言中各添加一個(gè)自己的代碼片段,如下

{
    "import_module": {
        "prefix": "importfrom",
        "body": [
          "import {${2:moduleName}} from '${1:path}';",
          "" // 去除這行,就不會(huì)在插入import from同時(shí)在下方插入一個(gè)空白行了
        ],
        "description": "insert a import from"
    }
}

圖片描述

保存后,就可以愉快的使用關(guān)鍵字導(dǎo)入模塊啦~

參考資料:https://code.visualstudio.com...


已經(jīng)關(guān)了啊,關(guān)完shell當(dāng)然連不上了提示reconnect failed.

瞄小懶 回答

好奇葩的需求。估計(jì)是哪個(gè)面試官出的題吧。
如果誰(shuí)在項(xiàng)目中這樣做,直接就扔菜刀了。
正常人的做法:
Table的數(shù)據(jù)在全局的state中存放。
添加的時(shí)候,直接將添加的數(shù)據(jù)保存到數(shù)據(jù)庫(kù),然后再調(diào)一次getList接口。

瘋子范 回答

自己找到問題了。將mapperLocations的地址寫的更詳細(xì)就沒問題了。

蝶戀花 回答

SELECT * FROM fs_info WHERE month=2 and (a<>0 OR b<>0 OR c<>0)

她愚我 回答

你回寫這么多字段,很難說都是當(dāng)前用戶需要的。可以考慮兩點(diǎn)建議, 一是可以根據(jù)具體查詢場(chǎng)景對(duì)字段分解下。二是對(duì)部分聯(lián)合查詢建立視圖,對(duì)視圖再加上條件查詢,業(yè)務(wù)邏輯更清晰,同時(shí)權(quán)限也好控制。還有就是對(duì)改動(dòng)不多的字段進(jìn)行適當(dāng)冗余,保存在多個(gè)表里,這樣可以提高查詢效率。
個(gè)人認(rèn)為遵守范式前提保證查詢效率和開發(fā)時(shí)間,得到的好處是便于維護(hù)和減少存儲(chǔ)空間(誰(shuí)還在乎這個(gè)?)。需要做的就是好處和成本之間做均衡。

囍槑 回答

從效率來看:

  • 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a)
  • T1數(shù)據(jù)量小而T2數(shù)據(jù)量非常大時(shí),T1<<T2 時(shí),1) 的查詢效率高。
  • 2) select * from T1 where T1.a in (select T2.a from T2)
  • T1數(shù)據(jù)量非常大而T2數(shù)據(jù)量小時(shí),T1>>T2 時(shí),2) 的查詢效率高。

簡(jiǎn)而言之,一般式:外表大,用IN;內(nèi)表大,用EXISTS。

詳情

拽很帥 回答

兩種都要有,各有使用場(chǎng)景,具體到你說的這種情況,適合用sql鏈接查詢。
因?yàn)閟ql鏈接查詢只需要一次數(shù)據(jù)庫(kù)IO,而多個(gè)dao,需要多次數(shù)據(jù)庫(kù)IO,要知道數(shù)據(jù)庫(kù)IO是很耗時(shí)的。
所以,sql鏈接查詢,把計(jì)算交給數(shù)據(jù)庫(kù),相對(duì)來說,性能更高一些。

兮顏 回答

重新安裝了mongoDB在試就可以了

瘋子范 回答

int類型的(包括tinyint,smallint...)后面括號(hào)內(nèi)的數(shù)字,一般情況下是不需要專門設(shè)置的,默認(rèn)的就好了。
因?yàn)樗慌c顯示有關(guān),和占用的空間無關(guān)。

而只有一種情況下,我們需要用到:
當(dāng)數(shù)字的長(zhǎng)度小于指定位數(shù)時(shí),用0補(bǔ)齊。這時(shí)需要結(jié)合zerofill使用
比如 tinyint(2) zerofill
如果是3,則顯示為 03
如果是122,則顯示為 122

如果你不使用zerofill,而括號(hào)內(nèi)的數(shù)字隨便寫,效果是一樣的。

獨(dú)白 回答

1.房產(chǎn)-工作表
分類ID 房產(chǎn)信息ID 工作信息ID

2.房產(chǎn)表
房產(chǎn)信息ID 屬性1 屬性2 ……

3.工作表

工作信息ID 屬性1 屬性2 ……

絯孑氣 回答

個(gè)人理解如果數(shù)據(jù)庫(kù)是這么設(shè)計(jì)的話,初衷是讓在應(yīng)用程序中處理:按照逗號(hào)分隔,逐條查詢r(jià)ule表,更常規(guī)的做法是用一個(gè)用戶和規(guī)則的關(guān)聯(lián)表。

如果非要用sql做關(guān)聯(lián)查詢,可以用FIND_IN_SET,不過效率不會(huì)太高。

select *
from 
(select '1,2,3,4,5' ids) t1 inner join (select 1 id, '張三' name union select 2, '李四') t2 
on FIND_IN_SET(t2.id, t1.ids) > 0
不討喜 回答
select date, count('字段') as '顯示的名字' , count('字段') as '顯示的名字' from `表` group by date

//date 表示 日期的字段名

圖片描述

陌璃 回答

1.對(duì)于key idx(user_id, user_name)
如果查詢語(yǔ)句是這樣的 select * from mytable where user_id = 1; 這樣索引是生效的.
如果查詢語(yǔ)句是這樣的 select * from mytable where user_name = "tom"; 這樣索引是不生效的.

這是組合索引的最左優(yōu)先原則. 索引的第一個(gè)字段必須出現(xiàn)在查詢語(yǔ)句中.
兩個(gè)區(qū)別是 : 用user_i字段查詢多還是用user_name字段查詢多.