[mysql]mysql資料庫備份與還原

參考網址:https://blog.udn.com/wordred0227/1912227

 

發表於 程式設計 | 發表迴響

[ubuntu]rsync同步文件時如何排除指定文件夾或多個目錄

參考網址:https://kknews.cc/zh-tw/code/rnjar5o.html

 

如果您喜歡使用–exclude選項,您可以用括號{}列出您想要排除的文件和目錄,中間用逗號隔開,如下所示:

排除file1.txt,排除目錄dir/*,排除目錄dir2

rsync -a --exclude={'file1.txt','dir1/*','dir2'} src_directory/ dst_directory/

如果要排除的文件或者目錄的數量很大,可以在一個文件中指定要排除的文件和目錄,並將文件傳遞給exclude-from選項,而不是使用多個–exclude選項。

下面的命令與上面的命令完全相同:

rsync -a --exclude-from='exclude-file.txt' src_directory/ dst_directory/

編輯exclude-file.txt文件

原文網址:https://kknews.cc/code/rnjar5o.html

發表於 Linux系統 | 發表迴響

[bootstrap]bootstrap 讓 page-break-after無作用,無法順利分頁

參考網址:stackoverflow

網路討論

Firstly, page-break doesn't work inside absolutely positioned elements so make sure your page-break isn't inside one.

Now, since float is causing the page-break to be ignored, we need to clear the float.

The problem is that clear: both; doesn't work if the element with page-break-after: always; is a float (eg: .col-xs-12 in bootstrap).

The trick is to add 2 new divs with the clear and page-break after the div you want to add the page-break to:

<div class="page-break-clear"></div>
<div class="page-break">&nbsp;</div>

<style type="text/css">
.page-break-clear { 
  clear: both;
}
.page-break {
  page-break-after: always; /* depreciating, use break-after */
  break-after: page;
  height: 0px;
  display: block!important;
}
</style>

試過了,還是沒作用。

發表於 程式設計 | 發表迴響

[bash]變數

新增一個變數
t2=gg
echo $t2

在~/.bashrc中新增一個變數
export LC_CTYPE="zh-TW.UTF-8"

 

發表於 Linux系統, 程式設計 | 發表迴響

[Sublime] SFTP同步遠端資料夾

參考網址:一起唱DoReMi

使用Sublime[官網]可以很輕鬆地和遠端伺服器的資料夾同步,

首先記得下載Sublime SFTP的套件[下載]。

 

除了到官方網站下載,另外也可以透過sublime的內建指令安裝

最後搜尋SFTP即可完成安裝!

發表於 程式設計 | 發表迴響

[mysql]mysql 不同條件count ,多條件count()及行列加總

參考網址:程式人生 https://www.796t.com/content/1550942407.html

用途:統計各欄次數

mysql total time lse case from pre div clas

 

create table abc(A int,B int)

Select A,count(B) as total from ABC group by A
Select A,count(B) as total1 from ABC where B > 30 group by A
Select A,count(B) as totlal2 from ABC where B > 20 group by A

.

如何合並這三個查詢?
得到一個查詢結果:
A,total,total1,total2

答:

Select A,
count(B) as total,
sum(case when B > 30 then 1 else 0 end) as total1,
sum(case when B > 20 then 1 else 0 end) as total2 
from ABC group by A
查詢該項目(i1)在該班級該性別的參賽人數
select sum(case when i1='v' then 1 else 0 end) as c1,
       sum(case when i2='v' then 1 else 0 end) as c2,
       sum(case when i3='v' then 1 else 0 end) as c3,
       sum(case when i4='v' then 1 else 0 end) as c4,
       sum(case when i5='v' then 1 else 0 end) as c5

from player where gov_code='701' and player_sex=2

行列加總

行加總:計算該行有多少v
select sum(case when i1='v' then 1 else 0 end) as c1,
       sum(case when i2='v' then 1 else 0 end) as c2,
       sum(case when i3='v' then 1 else 0 end) as c3
from player where gov_code='701' 


列加總:計算該列有多少v
select (s1+s2+s3+s4+s5) as ss from
(select 
    (case when i1='v' then 1 else 0 end) as s1,
    (case when i2='v' then 1 else 0 end) as s2,
    (case when i3='v' then 1 else 0 end) as s3
from player where player_id=1) as abc

 

發表於 程式設計 | 發表迴響

[bootstrap]側邊欄

參考網址:CWC 可收放及響應式的「側邊導覽列」

範例程式中有使用jquery
為了程式的相容性,想將jquery改成純javascript
 

 
//  展開/收合按鈕
$(document).ready(function() {

    $("#collapse").on("click", function() {

        $("#sidebar").toggleClass("active");
        $(".fa-align-left").toggleClass("fa-chevron-circle-right");
    })
})

參考https://stackoverflow.com/questions/18880890/how-do-i-toggle-an-elements-class-in-pure-javascript
改成
 

function tg()  {
	//alert('bbb');    

	const toggleClass = (el, className) => el.classList.toggle(className);
	//$("#sidebar").toggleClass("active");
	toggleClass(document.getElementById('sidebar'),'active');

	//目前無法改
	//$(".fa-align-left").toggleClass("fa-chevron-circle-right");
	//toggleClass(document.getElementById('fa-align-left'),'fa-chevron-circle-right');
	//alert('aaa');
} 

可以收展,但icon無法改,先這樣囉

發表於 程式設計 | 發表迴響

[mysql]如何對MySQL資料庫中的資料進行實時同步

參考網址:https://www.juduo.cc/club/3579790.html

https://tknl45.pixnet.net/blog/post/241768457

主從搭建 – 部署流程(Master Slave Replication )
https://ithelp.ithome.com.tw/articles/10267651

 

https://tw511.com/a/01/15779.html

slave一直法順利登入master
原因是mysql的安全機制
用telnet 192.168.1.9 3306 會發現被拒絕,無法連入
端口3306在我的Ubuntu服務器上似乎已關閉
 

問題在於服務器僅在內部進行偵聽。

/etc/mysql/my.cnf刪除行bind-address 127.0.0.1解決了該問題。

較新版本的Ubuntu(≥16.04)在/etc/mysql/mysql.conf.d/mysqld.cnf中可能有此行。

 

用phpmyadmin建立主從架構

 

一些錯誤情況的處理方法
https://xdeath.tw/read.php?14

 

網管人
https://www.netadmin.com.tw/netadmin/zh-tw/technology/12B7B6D6D2F7428085C43CA313D02E93?page=3

 

https://ssorc.tw/211/%E8%B3%87%E6%96%99%E5%BA%AB%E5%90%8C%E6%AD%A5-mysql-%2B-replication/
註2
slave上會有兩個檔master.info與relay-log.info
如果slave 當機或stop時,重新啟動後,會去讀取這兩檔,繼續從上次中斷點開始未完成的備份

註3
如果資料還是沒有同步的話,可能是slave沒有設定成功,可刪掉相關設定檔,重新設定。
cd /var/lib/mysql
rm -f *-bin.*
rm -f master.info

註4
其它指令
mysql> show processlistG

mysql> show master logsG

mysql> purge master logs to 'xxxxx-bin.004' # 刪除xxxxx-bin.004之前的log檔資料

測試過程中用到的指令
GRANT FILE ON *.* TO 'backup'@'120.116.xx.xx' IDENTIFIED BY 'passwd';
GRANT REPLICATION SLAVE ON *.* TO 'backup'@"120.116.xx.xx" IDENTIFIED BY 'passwd';

https://tyeydy.com/mysql-command-create-user/
CREATE USER 'backup'@'120.116.xx.xx' IDENTIFIED BY 'passwd';
GRANT FILE ON *.* TO 'backup'@'120.116.xx.xx';
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'120.116.xx.xx';
FLUSH PRIVILEGES;

show variables like 'server_id';
show master status;
主從搭建 - 部署流程(Master Slave Replication )
[mysqld]
server-id=2
master-host=sa.xxx.xxx
master-host=125.228.xx.xx
master-user=backup
master-password=passwd
master-port=3306
master-connect-retry=60
replicate-do-db=ns

change master to master_user='backup',master_password='passwd',master_host='192.168.1.9',master_log_file='mysql-bin.000003',master_log_pos=157,get_master_public_key=1;

change master to master_user='backup',master_password='passwd',master_host='sa.xx.xx',master_log_file='mysql-bin.000003',master_log_pos=157,get_master_public_key=1;
Slave_IO_Running: Connecting

create user 'backup'@'%' identified by 'passwd';
grant replication slave on *.* to 'backup'@'%';
change master to master_user='backup',master_password='passwd',master_host='192.168.1.9',master_log_file='mysql-bin.000007',master_log_pos=3530,get_master_public_key=1;

https://www.est.idv.tw/%E4%BD%BF%E7%94%A8phpmyadmin%E5%BB%BA%E7%AB%8B-mysql-replication-%E4%B8%BB%E5%BE%9E%E5%82%99%E6%8F%B4/

https://blog.csdn.net/weixin_39864101/article/details/113582490
测试时发现之前库不一致时我在主库里面添加一张表,而从库没有那个库,导致从库 slave 会报错,执行这个命令后重启从库就可以跳过这个错误。

#SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1 跳过一个事务

 

發表於 Linux系統, 程式設計 | 發表迴響

[mysql]消除Warning: Using a password on the command line interface can be insecure的提示

參考網址:https://www.cnblogs.com/realcp1018/p/8808821.html

基於安全性的考量執行資料庫復原時使用
mysql -uroot -pxxxxxx demo <demo.sql 指令時會出現如標題的錯誤

解決方法:

因为mysql命令读取配置文件的顺序为/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf,所以可以将账号密码写入~/.my.cnf中,这样执行时只需要指定-u参数即可,注意此文件权限建议设置为600。

# ~/.my.cnf示例:
[client]
user=root
password=<你的密码>
# 上述的[client]也可以替换为[mysql]

 

發表於 Linux系統, 程式設計 | 發表迴響

[sport]mysql + jeditable / 點擊編輯 / 資料庫表單 / 範例

參考網址:https://izo.tw/jeditable/

有時候我們會懶得登入phpmyadmin,
於是我們是可以製作一個前台的 MYSQL 管理表單,即點即編
就是設置『點擊修改表單』的功能啦。
我們需要運用到jQuery的jeditable,去製作一個PHP的頁面。

https://blog.xuite.net/kb8.gyes/free/27183210#

之前一直在想用jQuery,將mysql顯示在網頁上的表格資料,用不換頁的方式,進行修改與刪除,但是弄了好久,只有完成新增與刪除,沒有做到修改的功能,後來找到一個好用的UI,

名叫:Jeditable,下載點在此:

http://www.appelsiini.net/projects/jeditable;

大概實作一下:

先做出一個檔案:1.php

在<body></body>中加入底下標籤:

<div class="edit" id="div_1">Dolor</div>
<div class="edit_area" id="div_2">Lorem ipsum dolor sit amet, consectetuer
adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore
magna aliquam erat volutpat.</div>

接著命名第二個檔案:1.js

加入底下的script:

$(document).ready(function() {
     $('.edit').editable('save.php', {
         indicator : 'Saving…',  
         tooltip   : 'Click to edit…'
     });
     $('.edit_area').editable('save.php', {
         type      : 'textarea',    //輸入欄位的種類為textarea
         cancel    : '取消修改',
         submit    : '確認修改',
         indicator : '<img src="img/indicator.gif">',
         tooltip   : 'Click to edit…'
     });
});

參數解說一下:

editable('xxx.php'):xxx.php這個檔案為用來進行修改欄位之後,進行將資料存入mysql的php頁面

indicator:正在儲存中,要顯示給使用者看的文字訊息,也能用圖片的方式

tooltip:當滑鼠經過其上方時,要顯示的提示訊息

cancel:表單上代表取消鈕的動作

submit:表單上代表送出鈕的動作

而當按下確認修改鈕之後,將會POST兩個變數給save.php這個頁面

id=您要修改的該筆資料的識別碼&value=要修改的值

嗯,沒有錯,一個變數的名稱就是id,另一個就叫value

而如果想取不一樣的變數名稱的話,請加入底下有色的兩行

$(document).ready(function() {
     $('.edit').editable(save.php', {
         id   : 'elementid',
         name : 'newvalue'
     });
});

所以save.php的頁面可以這樣寫:

###############################

$id $_POST['id'];

$value $_POST['value'];

//如果有改變數名稱請改成底下

//

//$id $_POST['elementid'];

//$value $_POST['newvalue'];

  

//將$_POST['id']用explode函式拆解為$field和$id兩個變數

list($field$id) = explode('_'$id);

  

//mysql query

mysql_query("UPDATE tb_category SET $field='$value' WHERE cId='$id'");

  

//將值傳回前端

echo $value;

 

#############################

 

而如果輸入的欄位是選單鈕的話,就要加入底下有顏色的程式:

 

$('.editable').editable('save.php', {
     data   : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
     type   : 'select',
     submit : 'OK'
});

解說一下參數

data:"{'選項一的值':'選項一在表單上顯示的名稱','選項二的值':'選項二在表單上顯示的名稱'......,'selected':'選項一的值'}",

type:'select',  //輸入的欄位為選單

其中的selected就是選單預設選取的項目

而如果不想用data的方式的話,也可以改成這樣:

$('.editable').editable(save.php', {
     loadurl : 'json.php',
     type   : 'select',
     submit : 'OK'
});

而json.php的樣子是長這樣:

###############################
 $array['E'] =  'Letter E';
$array['F'] =  'Letter F';
$array['G'] =  'Letter G';
$array['selected'] =  'F';
print json_encode($array);

###############################

要修飾外觀時,可以加入底下這個:

$('.editable').editable(save.php', { 
     cssclass:'cellcolor'  //cellcolor為css檔案中的樣式名稱

     style   : 'display: inline' //顯示的方式

      });

 

參數:
https://www.tad0616.net/modules/tad_book3/html.php?tbdsn=306
 

1.method:傳輸方法,可用post或put
2.callback:指定送出資料後要執行的函數
3.name:設定欄位name名稱
4.id:設定欄位id名稱
5.submitdata:額外要送出的資料
6.type:欄位類型,可用text、textarea、select
7.rows:textarea的列高
8.cols:textarea的欄寬
9.height:欄位高度,其值可為:auto、none或指定高度(單位為px)
10.width:欄位寬度,其值可為:auto、none或指定寬度(單位為px)
11.loadurl:在欄位中載入指定連結之內容
12.loadtype:載入連結之請求類型,可為GET或POST
13.loadtext:載入額外資料時要呈現的文字
14.loaddata:擷取編輯內容前要傳送的額外參數
15.data:預設值
16.indicator:儲存時的顯示內容,可用HTML
17.tooltip:提示說明
18.event:jquery事件,如:click或dblclick
19.submit:送出的按鈕文字
20.cancel:取消的按鈕文字
21.cssclass:要套用的class名稱,是套到該元件的上一層。
22.style:直接指定style樣式,是套到該元件的上一層。
23.select:true 或 false,當選擇文字被標記時
24.placeholder:空值時,要呈線的內容
25.onblur:該元件不在焦點上時,要進行的動作:cancel、submit、ignore或function

 

發表於 程式設計 | 發表迴響