鍍金池/ 問(wèn)答/ 數(shù)據(jù)庫(kù)問(wèn)答
入她眼 回答

dingo API: A RESTful API package for the Laravel framework
最近好像是支持 Lumen 了,用來(lái)做 API 應(yīng)該很合適。

解夏 回答

主外鍵類(lèi)型不一致,查看下主鍵和外鍵的數(shù)據(jù)類(lèi)型和設(shè)置的長(zhǎng)度是否一致?

不討喜 回答

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

幼梔 回答

你和后臺(tái)是一個(gè)局域網(wǎng)的話(huà),先ping一下他的ip,看看通不通,再把你那個(gè)請(qǐng)求的路徑放到瀏覽器直接打開(kāi),報(bào)405接口是通的,跨域是他后臺(tái)沒(méi)有設(shè)置請(qǐng)求頭,報(bào)403是網(wǎng)關(guān)沒(méi)穿透,需后臺(tái)設(shè)置,還報(bào)404的話(huà)是他的ip根本不通,配置完代理記得重啟項(xiàng)目

忠妾 回答

墨菲定律只要有可能出錯(cuò),就一定會(huì)出錯(cuò),不管它的概率有多小。

不能連續(xù)出現(xiàn),單機(jī)服務(wù)。舉個(gè)例子,假如你使用 自增ID 在加 System.nanoTime() 組成一個(gè) long 類(lèi)型數(shù)字(是字符串形式連接,而不是加法)。這個(gè)ID就不會(huì)重復(fù)了,因?yàn)?自增ID 一定不會(huì)重復(fù)。

悶騷型 回答

停掉其他服務(wù),還有命令啟動(dòng)命令是‘mongo’ 打錯(cuò)了;

蝶戀花 回答

SELECT count(*) FROM test GROUP BY DATE_FORMAT(time ,'%Y-%m-%d');

如果只要某個(gè)范圍內(nèi)的天數(shù)可以在加一個(gè)
where
time>='startday' AND time<='endday'

笨笨噠 回答
  1. 開(kāi)分支
  2. 按模塊做重構(gòu)
  3. 測(cè)試
  4. 合并

重復(fù) 2-3

執(zhí)念 回答
if ($('#data-table').hasClass('dataTable')) {
    var oldTable = $('#data-table').dataTable();
    oldTable.fnClearTable(); //清空一下table
    oldTable.fnDestroy(); //還原初始化了的dataTable
    $('#data-table').empty();
}
墨沫 回答

MyISAM 因?yàn)樗奈募撬饕募?和 數(shù)據(jù)文件存的,而且索引文件存的是地址,所以基本上是用于頻繁的查詢(xún)的;
InnoDB 因?yàn)槭谴娴氖菙?shù)據(jù)文件,索引也都放在一起,而且又擁有事務(wù),所以它幾乎用于增刪改操作,當(dāng)然,如果數(shù)據(jù)量小的話(huà),也可以存于innodb引擎的,比如10W內(nèi);;然后其他的就根據(jù)你業(yè)務(wù)上的需要而進(jìn)行調(diào)整而選擇哪個(gè)引擎了。

嘟尛嘴 回答

py不熟,給思路吧。

SVG和Canvas的區(qū)別,我覺(jué)得前者更偏重于聲明式(或者可以說(shuō)類(lèi)似于HTML標(biāo)簽),而后者則更多的是命令式的(對(duì)應(yīng)Javascript語(yǔ)言)。這就導(dǎo)致了它們?cè)趹?yīng)用上,SVG使用固定/已有圖像、以及相對(duì)“固化”的動(dòng)畫(huà)效果時(shí),會(huì)更有優(yōu)勢(shì)一些;而Canvas則足夠動(dòng)態(tài),適用于一些需要復(fù)雜邏輯控制(舉個(gè)例子,比如繪制根據(jù)聲波變化的連續(xù)的正弦曲線)或者在2D/3D或者需要復(fù)雜圖形學(xué)參與的場(chǎng)合。至于矢量還是位圖,由于它們都具有操作位圖的能力,所以其實(shí)都無(wú)所謂。
題目中這個(gè)我覺(jué)得還是SVG更適合,前邊說(shuō)了SVG和HTML相對(duì)的會(huì)比較親和,所以如果不是特別大的文件,去掉頂部的XML和Doctype聲明之后,是可以直接嵌入到HTML之中的,比如我之前寫(xiě)過(guò)的一個(gè)H5里,有幾張小圖都是單獨(dú)出現(xiàn)的,我為了避免逐個(gè)去定位,就把它們直接寫(xiě)到了一個(gè)SVG容器里:

<svg id="awardOuter" version="1.1" baseProfile="full" width="540" height="541" xmlns="http://www.w3.org/2000/svg">
    <defs>
        <g id="first" width="150" height="175">
            <image xlink:href="xxx.png" x="0" y="35" width="150" height="75"></image>
            <text font-size="20" fill="white" x="75" y="130" text-anchor="middle">第一</text>
        </g>
        <g id="second" width="150" height="175" transform="rotate(120 75 87)">
            <image xlink:href="yyy.png" x="0" y="35" width="150" height="75"></image>
            <text font-size="20" fill="white" x="75" y="130" text-anchor="middle">第二</text>
        </g>
        <g id="third" width="150" height="175" transform="rotate(240 75 87)">
            <image xlink:href="zzz.png" x="0" y="35" width="150" height="75"></image>
            <text font-size="20" fill="white" x="75" y="130" text-anchor="middle">第三</text>
        </g>
    </defs>
    <image xlink:href="img/temp.png" x="0" y="0" width="540" height="541"></image>
    <use xlink:href="#first" x="195" y="20"></use>
    <use xlink:href="#second" x="334" y="264"></use>
    <use xlink:href="#third" x="50" y="264"></use>
</svg>

這段我是直接寫(xiě)到HTML里的,可以看到SVG主標(biāo)簽上其實(shí)就只有SVG命名空間(xmlns="http://www.w3.org/2000/svg")、版本信息(版本號(hào)version="1.1"和相應(yīng)的語(yǔ)言集baseProfile="full"),然后再加個(gè)寬高就可以了(當(dāng)然如果有復(fù)雜縮放可以加上SVG視口屬性),定位直接用CSS定位就行。矢量的話(huà)也是一樣的思路,看你已經(jīng)寫(xiě)了Demo,可以套進(jìn)去試試。

不將就 回答

@leftstick
向你請(qǐng)教一個(gè)問(wèn)題。
我有個(gè)用戶(hù)表,user----userId
有個(gè)話(huà)題表,topic ----topicId
現(xiàn)在做一個(gè)關(guān)注表,就是用戶(hù)關(guān)注了某一些話(huà)題:like
目前我的解決方案是,額外建立一張表

const like = Model.define('like', {
  userId: {
    type: sequelize.INTEGER,
    allowNull: true,
  },
  topicId:{
    type: sequelize.INTEGER,
    allowNull: false
  }
}, {
  tableName: 'like',
  timestamps: true,
  updatedAt: false
})

like.hasMany(Topic,{foreignKey:'topicId',sourceKey:'topicId'})

這是我查詢(xún)某個(gè)人的關(guān)注話(huà)題,并且從topic中獲取話(huà)題的詳細(xì)信息。比如title,描述等等。。。

await LikeModel.findAll({
        include:{
          model:TopicModel,
        },
        attributes:{exclude:['id','createdAt']}
      }).then(res=>{
        console.log(res)
        ctx.body = res
      })

得到的結(jié)果

[
    {
        "userId": "1",
        "topicId": 1,
        "topics": [
            {
                "topicId": 1,
                "title": "1212",
                "des": "2332"
            }
        ]
    },
    {
        "userId": "1",
        "topicId": 2,
        "topics": [
            {
                "topicId": 2,
                "title": "1212",
                "des": "2332"
            }
        ]
    }
]

但我想要的數(shù)據(jù)是,關(guān)注的話(huà)題套入到topics這個(gè)數(shù)組中。。。

我想請(qǐng)問(wèn)在這種情況如何解決呢??
2,或者我建立的表關(guān)聯(lián)是否用如下建立

User.belongsToMany(Topic,{through:'like',foreignKey:'unionId',otherKey:'topicId'})
Topic.belongsToMany(User,{through:'like',foreignKey:'topicId',otherKey:'unionId'})

多對(duì)多,建立聯(lián)系,怎么操作這數(shù)據(jù)呀?

圖片描述

比如下面的帖子列表中的作者名字和留言里的作者名字,都需要改成備注的。

乖乖瀦 回答

pg如果不支持分區(qū)函數(shù)的話(huà),就多關(guān)聯(lián)幾次表吧,如:

select id, name, time, max(value)
from t inner join (
select id, name, max(time) as max_time
from t
group by id, name
) t1 on t.id = t1.id and t.name = t1.name and t.time=t1.max_time
group by id, name, time
小眼睛 回答

使用MongoDB的第一件事情就是忘掉關(guān)系模型,充分利用反范式、冗余來(lái)達(dá)成最高的讀寫(xiě)效率。你已經(jīng)發(fā)現(xiàn)了現(xiàn)在的數(shù)據(jù)模型不好用,為什么不換個(gè)思路來(lái)解決問(wèn)題?
決定數(shù)據(jù)模型的是你需要怎么使用這些數(shù)據(jù)。在不知道你打算怎么用這些數(shù)據(jù)的前提下,以下是一些按照常理的推測(cè)。
現(xiàn)在涉及的實(shí)體有3個(gè):

  • teacher
  • student
  • class

其中:

  • teacher:class = 1:n
  • class:student = 1:n

對(duì)于1:n的情況,最常見(jiàn)的做法是把1冗余到n。比如學(xué)生可以是:

{
    _id:ObjectId(123456789...),
    name:'zhangsan',
    age:20,
    class: {
        classId: ObjectId(123456789...),
        number:10,
        // 其他常用字段
    }
}

當(dāng)然你也可以不要class的詳細(xì)信息,畢竟一個(gè)班的學(xué)生只用查一次班級(jí)信息。

{
    _id:ObjectId(123456789...),
    name:'zhangsan',
    age:20,
    classId: ObjectId(123456789...)
}

用的時(shí)候是不是會(huì)方便一些?
沒(méi)錯(cuò),冗余有可能會(huì)造成數(shù)據(jù)不一致,但是你真的會(huì)這么在乎一致性嗎?通常的回答是不會(huì)。
比如如果班級(jí)信息如果要修改怎么辦?那就會(huì)造成每個(gè)學(xué)生的班級(jí)信息都更新一遍,修改時(shí)壓力會(huì)比較大操作比較復(fù)雜。但是別忘了你的系統(tǒng)大部分壓力是來(lái)自讀而不是寫(xiě)。班級(jí)修改的概率有多大?可能幾個(gè)月不見(jiàn)得有一次。但是讀班級(jí)的概率有多大?可能每天就有好多次。比較一下孰輕孰重不言而喻。

綜上,使用MongoDB時(shí)不要用范式來(lái)約束自己,從性能,易用性來(lái)考慮就可以了。

帥到炸 回答

lz今天再次調(diào)試的時(shí)候, 因?yàn)殚_(kāi)始出現(xiàn)了一個(gè)Servlet沒(méi)有找到, 就順手clean了下Tomcat和項(xiàng)目的緩存, 然后再次調(diào)試, 居然詭異般的好了...
哎 , 無(wú)心插柳柳成蔭, 里面的機(jī)制太讓人費(fèi)解了.

逗婦惱 回答

這種情況下不報(bào)異常就是成功

空痕 回答

樓主提的這個(gè)問(wèn)題并不是mysql的問(wèn)題。
建議樓主可以認(rèn)真看看TCP/IP或者HTTP相關(guān)的書(shū)籍,補(bǔ)充一些網(wǎng)絡(luò)基礎(chǔ)知識(shí)。
首先,外部能夠連接到內(nèi)部電腦,如果在同一個(gè)WIFI下,A和B處于同一個(gè)子網(wǎng),也就是局域網(wǎng)中,你的mysql服務(wù)器的IP地址和你的外部電腦處于同一個(gè)網(wǎng)段,因此可以直接ping通,可以實(shí)現(xiàn)遠(yuǎn)程連接。
如果兩個(gè)電腦處于不同的網(wǎng)段中,也就是無(wú)法ping通,肯定是連接不上的,你需要中間代理或者直接將mysql傳到具有公網(wǎng)IP的服務(wù)器上部署,全世界任何一個(gè)電腦都可以ping通你的mysql所在的服務(wù)器,那樣就可以遠(yuǎn)程連接OK了。
我之前遇到的問(wèn)題是,未打開(kāi)遠(yuǎn)程訪問(wèn)權(quán)限導(dǎo)致的。
解決辦法:
如果你想任何時(shí)間都能夠訪問(wèn)到mysql數(shù)據(jù)庫(kù),建議你將它部署在阿里云騰訊云這種云服務(wù)器上,主機(jī)商會(huì)提供一個(gè)公網(wǎng)IP供你連接。或者你也可以部署到自己購(gòu)買(mǎi)的VPS上,比如vultr這類(lèi)vps主機(jī)上,它依然會(huì)提供一個(gè)公網(wǎng)IP。

礙你眼 回答

如果是當(dāng)前日期,用SYSDATE系統(tǒng)變量就可以了。

SELECT SYSDATE FROM dual;

如果是字符串轉(zhuǎn)日期,用to_date函數(shù),如:

SELECT to_date('2017-12-05 08:00:00', 'yyyy-mm-dd hh24:mi:ss') FROM dual;
--逆向思維,那我們就先查出這三個(gè)字段都不含8的數(shù)據(jù)
--再查詢(xún)的時(shí)候不包含它們即可

SELECT Id,mobile1,mobile2,mobile3 FROM [Table]

WHERE Id NOT IN
        (
            SELECT Id FROM [Table] 

            WHERE mobile1<>8 AND mobile1<>8 AND mobile1<>8
         )