如果你已經對datasource、database和schema有清晰的認知了(雖然我認爲這樣的人都不會打開這篇博文了)
那您可以離開本頁了,不想浪費您的時間~
像我這麼的人一般能百度到的東西都不會拿出來寫...
但是這次我研究的這個事兒,應該是全網無人總結的(問題的表象無人說,問題的本質當然是有大佬解釋的啦,看下去就知道我在說啥了~)
背景描述:
今天在看別人的servlet代碼的時候突然發現
這個東西應該是數據庫名吧,咦我怎麼記得我在DG裏默認的數據庫裏沒有這個東西呢?打開DG一看,果然
但是我連接過其他的項目的數據庫,是有這個東西的,那個時候沒深究。
於是我就去請教我的小夥伴(他用的是navicat),他說Database就是數據庫的名字啊,於是他給我演示了一下在navicat上新建一個數據庫的操作……
但是我回來找類似create/new database的操作,愣是沒找到,我還百度了好久,沒有能解決我疑惑的
我還實驗性地這樣做:
測試連接直接紅了,說明沒找到這個數據庫。(說明了兩個問題,第一這不是新建數據庫的操作!第二本地沒有這個數據庫!)
第二點好理解,確實沒有這個數據庫,因爲我本來就是想要通過這個方法來創建它。
第一點就很疑惑了,如果我把database去掉,是可以新建一個schema(注意我的用詞不是數據庫)的,但是這也不是新建數據庫啊
讓我來總結一下我的問題。
DG項目結構如下:
在我的理解裏,
1:DG項目創建的一個數據庫連接,看到的MySQL-@localhost 是連接的名稱
2:概念模糊,應該是個集合一樣的東西
3:集合裏的實體對象,創建的時候也是new schema
4:很明顯這就是表啊
而就是我對schema的理解不夠到位,而引發了我所有的疑惑和不解
對1和4的理解是肯定沒有問題的,於是我去搜了一下schema的概念,參考如下(百度第一條)
原來在MySQL裏,schema和我們說的數據庫(database)是差不多一樣的概念,也就是說我們新建schema就是新建數據庫(database),也就是說2是數據庫的集合結構,3就是數據庫本身
於是我打開本地mysql server,show databases一下:
我再到DG中,創建一個新的連接如下:
紅字是時區錯誤!說明不是database沒找到!
我們改一下時區,新增一條serverTimezone即可
再測試一下:
奈斯 兄嘚!
讓我們打開來看一下:
連接到了我本地的web_cms數據庫,沒毛病
然後看到上面的 1 of 7 我就豁然開朗了,這玩意兒用於調節DG中展示的視圖,你可以選擇你想看哪幾個數據庫
這說明了一個問題,這個連接雖然指定了連接的database,但是我們用的是root賬號,所以可以看所有的數據庫,這個所有指的是localhost:3306下的即我們這個數據庫服務下的所有數據庫!
總結:
總算明白了DG的構造,讓我拿上面那個圖再來總結一下
1:連接
2:該連接下,你能訪問的數據庫們
3:一個數據庫
4:數據表
我們創建的連接是對應一個數據庫服務的,而這個連接我認爲應該稱之爲 數據源 以防跟數據庫混淆。
其實在DG中已經做了提示了,
我們這樣創建的就是數據源,在連接成功後我們可以在Schemas選項中選擇我們要連接的數據庫,
所以我覺得database這個選框其實沒什麼必要?畢竟連接前可以在Schemas中選擇,連接後又可以使用視圖來屏蔽/展示……
還是說除了root賬戶都需要通過指定database的方式來連接呢?這個問題沒有測試,有興趣的小夥伴可以去試試!
再回頭看本文最開始提出的疑惑,爲什麼打開本地數據源的連接屬性裏,沒有database這個屬性呢。因爲這是數據源啊!又不是數據庫!再問頭都打爛掉!你看到別的有這個屬性的,因爲它們都是針對某個特定數據庫連接!
如果要創建數據庫,就new schema!