php程序版本數(shù)據(jù)庫變動 php版本切換

學習PHP,環(huán)境為PHP5.2 和sqlserver 鏈接數(shù)據(jù)庫正常,其中在查收某段代碼時,和查詢分析器里的結果不同

同步兩個SQLServer數(shù)據(jù)庫如何同步兩個sqlserver數(shù)據(jù)庫的內容?程序代碼可以有版本管理cvs進行同步管理,可是數(shù)據(jù)庫同步就非常麻煩,只能自己改了一個后再去改另一個,如果忘記了更改另一個經(jīng)常造成兩個數(shù)據(jù)庫的結構或內容上不一致.各位有什么好的方法嗎?一、分發(fā)與復制用強制訂閱實現(xiàn)數(shù)據(jù)庫同步操作.大量和批量的數(shù)據(jù)可以用數(shù)據(jù)庫的同步機制處理://說明:為方便操作,所有操作均在發(fā)布服務器(分發(fā)服務器)上操作,并使用推模式在客戶機器使用強制訂閱方式。二、測試通過1:環(huán)境服務器環(huán)境:機器名稱:zehuadb操作系統(tǒng):windows2000server數(shù)據(jù)庫版本:sql2000server個人版客戶端機器名稱:zlp操作系統(tǒng):windows2000server數(shù)據(jù)庫版本:sql2000server個人版2:建用戶帳號在服務器端建立域用戶帳號我的電腦管理-本地用戶和組-用戶-建立username:zlpuserpwd:zlp3:重新啟動服務器mssqlserver我的電腦-控制面版-管理工具-服務-mssqlserver服務(更改為:域用戶帳號,我們新建的zlp用戶.\zlp,密碼:zlp)4:安裝分發(fā)服務器a:配置分發(fā)服務器工具-復制-配置發(fā)布、訂閱服務器和分發(fā)-下一步-下一步(所有的均采用默認配置)b:配置發(fā)布服務器工具-復制-創(chuàng)建和管理發(fā)布-選擇要發(fā)布的數(shù)據(jù)庫(sz)-下一步-快照發(fā)布-下一步-選擇要發(fā)布的內容-下一步-下一步-下一步-完成c:強制配置訂閱服務器(推模式,拉模式與此雷同)工具-復制-配置發(fā)布、訂閱服務器和分發(fā)-訂閱服務器-新建-sqlserver數(shù)據(jù)庫-輸入客戶端服務器名稱(zlp)-使用sqlserver身份驗證(sa,空密碼)-確定-應用-確定d:初始化訂閱復制監(jiān)視器-發(fā)布服務器(zehuadb)-雙擊訂閱-強制新建-下一步-選擇啟用的訂閱服務器-zlp-下一步-下一步-下一步-下一步-完成5:測試配置是否成功復制監(jiān)視器-發(fā)布衿?zehuadb)-雙擊sz:sz-點狀態(tài)-點立即運行代理程序查看:復制監(jiān)視器-發(fā)布服務器(zehuadb)-sz:sz-選擇zlp:sz(類型強制)-鼠標右鍵-啟動同步處理如果沒有錯誤標志(紅色叉),恭喜您配置成功6:測試數(shù)據(jù)在服務器執(zhí)行:選擇一個表,執(zhí)行如下sql:insertintowq_newsgroup_sselect'測試成功',5復制監(jiān)視器-發(fā)布服務器(zehuadb)-sz:sz-快照-啟動代理程序-zlp:sz(強制)-啟動同步處理去查看同步的wq_newsgroup_s是否插入了一條新的記錄測試完畢,通過。7:修改數(shù)據(jù)庫的同步時間,一般選擇夜晚執(zhí)行數(shù)據(jù)庫同步處理(具體操作略):d/*注意說明:服務器一端不能以(local)進行數(shù)據(jù)的發(fā)布與分發(fā),需要先刪除注冊,然后新建注冊本地計算機名稱卸載方式:工具-復制-禁止發(fā)布-是在"zehuadb"上靜止發(fā)布,卸載所有的數(shù)據(jù)庫同步配置服務器注意:發(fā)布服務器、分發(fā)服務器中的sqlserveragent服務必須啟動采用推模式:"d:\microsoftsqlserver\mssql\repldata\unc"目錄文件可以不設置共享拉模式:則需要共享~!*/少量數(shù)據(jù)庫同步可以采用觸發(fā)器實現(xiàn),同步單表即可。三、配置過程中可能出現(xiàn)的問題在sqlserver2000里設置和使用數(shù)據(jù)庫復制之前,應先檢查相關的幾臺sqlserver服務器下面幾點是否滿足:1、mssqlserver和sqlserveragent服務是否是以域用戶身份啟動并運行的(.\administrator用戶也是可以的)如果登錄用的是本地系統(tǒng)帳戶local,將不具備網(wǎng)絡功能,會產(chǎn)生以下錯誤:進程未能連接到distributor'@servername'(如果您的服務器已經(jīng)用了sqlserver全文檢索服務,請不要修改mssqlserver和sqlserveragent服務的local啟動。會照成全文檢索服務不能用。請換另外一臺機器來做sqlserver2000里復制中的分發(fā)服務器。)修改服務啟動的登錄用戶,需要重新啟動mssqlserver和sqlserveragent服務才能生效。2、檢查相關的幾臺sqlserver服務器是否改過名稱(需要srvid=0的本地機器上srvname和datasource一樣)在查詢分析器里執(zhí)行:usemasterselectsrvid,srvname,datasourcefromsysservers如果沒有srvid=0或者srvid=0(也就是本機器)但srvname和datasource不一樣,需要按如下方法修改:usemastergo--設置兩個變量declare@serverproperty_servernamevarchar(100),@servernamevarchar(100)--取得windowsnt服務器和與指定的sqlserver實例關聯(lián)的實例信息select@serverproperty_servername=convert(varchar(100),serverproperty('servername'))--返回運行microsoftsqlserver的本地服務器名稱select@servername=convert(varchar(100),@@servername)--顯示獲取的這兩個參數(shù)select@serverproperty_servername,@servername--如果@serverproperty_servername和@servername不同(因為你改過計算機名字),再運行下面的--刪除錯誤的服務器名execsp_dropserver@server=@servername--添加正確的服務器名execsp_addserver@server=@serverproperty_servername,@local='local'修改這項參數(shù),需要重新啟動mssqlserver和sqlserveragent服務才能生效。這樣一來就不會在創(chuàng)建復制的過程中出現(xiàn)18482、18483錯誤了。3、檢查sqlserver企業(yè)管理器里面相關的幾臺sqlserver注冊名是否和上面第二點里介紹的srvname一樣不能用ip地址的注冊名。(我們可以刪掉ip地址的注冊,新建以sqlserver管理員級別的用戶注冊的服務器名)這樣一來就不會在創(chuàng)建復制的過程中出現(xiàn)14010、20084、18456、18482、18483錯誤了。4、檢查相關的幾臺sqlserver服務器網(wǎng)絡是否能夠正常訪問如果ping主機ip地址可以,但ping主機名不通的時候,需要在winnt\system32\drivers\etc\hosts(win2000)windows\system32\drivers\etc\hosts(win2003)文件里寫入數(shù)據(jù)庫服務器ip地址和主機名的對應關系。例如:127.0.0.1localhost192.168.0.35oracledboracledb192.168.0.65fengyu02fengyu02202.84.10.193bj_dbbj_db或者在sqlserver客戶端網(wǎng)絡實用工具里建立別名,例如:5、系統(tǒng)需要的擴展存儲過程是否存在(如果不存在,需要恢復):sp_addextendedproc'xp_regenumvalues',@dllname='xpstar.dll'gosp_addextendedproc'xp_regdeletevalue',@dllname='xpstar.dll'gosp_addextendedproc'xp_regdeletekey',@dllname='xpstar.dll'gosp_addextendedprocxp_cmdshell,@dllname='xplog70.dll'接下來就可以用sqlserver企業(yè)管理器里[復制]-右鍵選擇-[配置發(fā)布、訂閱服務器和分發(fā)]的圖形界面來配置數(shù)據(jù)庫復制了。下面是按順序列出配置復制的步驟:1、建立發(fā)布和分發(fā)服務器[歡迎使用配置發(fā)布和分發(fā)向導]-[選擇分發(fā)服務器]-[使"@servername"成為它自己的分發(fā)服務器,sqlserver將創(chuàng)建分發(fā)數(shù)據(jù)庫和日志]-[制定快照文件夾]-[自定義配置]-[否,使用下列的默認配置]-[完成]上述步驟完成后,會在當前"@servername"sqlserver數(shù)據(jù)庫里建立了一個distribion庫和一個distributor_admin管理員級別的用戶(我們可以任意修改密碼)。服務器上新增加了四個作業(yè):[代理程序歷史記錄清除:distribution][分發(fā)清除:distribution][復制代理程序檢查][重新初始化存在數(shù)據(jù)驗證失敗的訂閱]sqlserver企業(yè)管理器里多了一個復制監(jiān)視器,當前的這臺機器就可以發(fā)布、分發(fā)、訂閱了。我們再次在sqlserver企業(yè)管理器里[復制]-右鍵選擇-[配置發(fā)布、訂閱服務器和分發(fā)]我們可以在[發(fā)布服務器和分發(fā)服務器的屬性]窗口-[發(fā)布服務器]-[新增]-[確定]-[發(fā)布數(shù)據(jù)庫]-[事務]/[合并]-[確定]-[訂閱服務器]-[新增]-[確定]把網(wǎng)絡上的其它sqlserver服務器添加成為發(fā)布或者訂閱服務器.新增一臺發(fā)布服務器的選項:我這里新建立的jin001發(fā)布服務器是用管理員級別的數(shù)據(jù)庫用戶test連接的,到發(fā)布服務器的管理鏈接要輸入密碼的可選框,默認的是選中的,在新建的jin001發(fā)布服務器上建立和分發(fā)服務器fengyu/fengyu的鏈接的時需要輸入distributor_admin用戶的密碼。到發(fā)布服務器的管理鏈接要輸入密碼的可選框,也可以不選,也就是不需要密碼來建立發(fā)布到分發(fā)服務器的鏈接(這當然欠缺安全,在測試環(huán)境下可以使用)。2、新建立的網(wǎng)絡上另一臺發(fā)布服務器(例如jin001)選擇分發(fā)服務器[歡迎使用配置發(fā)布和分發(fā)向導]-[選擇分發(fā)服務器]-使用下列服務器(選定的服務器必須已配置為分發(fā)服務器)-[選定服務器](例如fengyu/fengyu)-[下一步]-[輸入分發(fā)服務器(例如fengyu/fengyu)的distributor_admin用戶的密碼兩次]-[下一步]-[自定義配置]-[否,使用下列的默認配置]-[下一步]-[完成]-[確定]建立一個數(shù)據(jù)庫復制發(fā)布的過程:[復制]-[發(fā)布內容]-右鍵選擇-[新建發(fā)布]-[下一步]-[選擇發(fā)布數(shù)據(jù)庫]-[選中一個待發(fā)布的數(shù)據(jù)庫]-[下一步]-[選擇發(fā)布類型]-[事務發(fā)布]/[合并發(fā)布]-[下一步]-[指定訂閱服務器的類型]-[運行sqlserver2000的服務器]-[下一步]-[指定項目]-[在事務發(fā)布中只可以發(fā)布帶主鍵的表]-[選中一個有主鍵的待發(fā)布的表]-[在合并發(fā)布中會給表增加唯一性索引和rowguidcol屬性的唯一標識符字段[rowguid],默認值是newid()](添加新列將:導致不帶列列表的insert語句失敗,增加表的大小,增加生成第一個快照所要求的時間)-[選中一個待發(fā)布的表]-[下一步]-[選擇發(fā)布名稱和描述]--[下一步]-[自定義發(fā)布的屬性]-[否,根據(jù)指定方式創(chuàng)建發(fā)布]-[下一步]-[完成]-[關閉]發(fā)布屬性里有很多有用的選項:設定訂閱到期(例如24小時)設定發(fā)布表的項目屬性:常規(guī)窗口可以指定發(fā)布目的表的名稱,可以跟原來的表名稱不一樣。下圖是命令和快照窗口的欄目(sqlserver數(shù)據(jù)庫復制技術實際上是用insert,update,delete操作在訂閱服務器上重做發(fā)布服務器上的事務操作看文檔資料需要把發(fā)布數(shù)據(jù)庫設成完全恢復模式,事務才不會丟失但我自己在測試中發(fā)現(xiàn)發(fā)布數(shù)據(jù)庫是簡單恢復模式下,每10秒生成一些大事務,10分鐘后再收縮數(shù)據(jù)庫日志,這期間發(fā)布和訂閱服務器上的作業(yè)都暫停,暫?;謴秃蟛]有丟失任何事務更改)發(fā)布表可以做數(shù)據(jù)篩選,例如只選擇表里面的部分列:例如只選擇表里某些符合條件的記錄,我們可以手工編寫篩選的sql語句:發(fā)布表的訂閱選項,并可以建立強制訂閱:成功建立了發(fā)布以后,發(fā)布服務器上新增加了一個作業(yè):[失效訂閱清除]分發(fā)服務器上新增加了兩個作業(yè):[jin001-dack-dack-5]類型[repl快照][jin001-dack-3]類型[repl日志讀取器]上面藍色字的名稱會根據(jù)發(fā)布服務器名,發(fā)布名及第幾次發(fā)布而使用不同的編號repl快照作業(yè)是sqlserver復制的前提條件,它會先把發(fā)布的表結構,數(shù)據(jù),索引,約束等生成到發(fā)布服務器的os目錄下文件(當有訂閱的時候才會生成,當訂閱請求初始化或者按照某個時間表調度生成)repl日志讀取器在事務復制的時候是一直處于運行狀態(tài)。(在合并復制的時候可以根據(jù)調度的時間表來運行)建立一個數(shù)據(jù)庫復制訂閱的過程:[復制]-[訂閱]-右鍵選擇-[新建請求訂閱]-[下一步]-[查找發(fā)布]-[查看已注冊服務器所做的發(fā)布]-[下一步]-[選擇發(fā)布]-[選中已經(jīng)建立發(fā)布服務器上的數(shù)據(jù)庫發(fā)布名]-[下一步]-[指定同步代理程序登錄]-[當代理程序連接到代理服務器時:使用sqlserver身份驗證](輸入發(fā)布服務器上distributor_admin用戶名和密碼)-[下一步]-[選擇目的數(shù)據(jù)庫]-[選擇在其中創(chuàng)建訂閱的數(shù)據(jù)庫名]/[也可以新建一個庫名]-[下一步]-[允許匿名訂閱]-[是,生成匿名訂閱]-[下一步]-[初始化訂閱]-[是,初始化架構和數(shù)據(jù)]-[下一步]-[快照傳送]-[使用該發(fā)布的默認快照文件夾中的快照文件](訂閱服務器要能訪問發(fā)布服務器的repldata文件夾,如果有問題,可以手工設置網(wǎng)絡共享及共享權限)-[下一步]-[快照傳送]-[使用該發(fā)布的默認快照文件夾中的快照文件]-[下一步]-[設置分發(fā)代理程序調度]-[使用下列調度]-[更改]-[例如每五分鐘調度一次]-[下一步]-[啟動要求的服務]-[該訂閱要求在發(fā)布服務器上運行sqlserveragent服務]-[下一步]-[完成]-[確定]成功建立了訂閱后,訂閱服務器上新增加了一個類別是[repl-分發(fā)]作業(yè)(合并復制的時候類別是[repl-合并])它會按照我們給的時間調度表運行數(shù)據(jù)庫同步復制的作業(yè)。3、sqlserver復制配置好后,可能出現(xiàn)異常情況的實驗日志:1.發(fā)布服務器斷網(wǎng),sqlserver服務關閉,重啟動,關機的時候,對已經(jīng)設置好的復制沒有多大影響中斷期間,分發(fā)和訂閱都接收到?jīng)]有復制的事務信息2.分發(fā)服務器斷網(wǎng),sqlserver服務關閉,重啟動,關機的時候,對已經(jīng)設置好的復制有一些影響中斷期間,發(fā)布服務器的事務排隊堆積起來(如果設置了較長時間才刪除過期訂閱的選項,繁忙發(fā)布數(shù)據(jù)庫的事務日志可能會較快速膨脹),訂閱服務器會因為訪問不到發(fā)布服務器,反復重試我們可以設置重試次數(shù)和重試的時間間隔(最大的重試次數(shù)是9999,如果每分鐘重試一次,可以支持約6.9天不出錯)分發(fā)服務器sqlserver服務啟動,網(wǎng)絡接通以后,發(fā)布服務器上的堆積作業(yè)將按時間順序作用到訂閱機器上:會需要一個比較長的時間(實際上是生成所有事務的insert,update,delete語句,在訂閱服務器上去執(zhí)行)我們在普通的pc機上實驗的58個事務100228個命令執(zhí)行花了7分28秒.3.訂閱服務器斷網(wǎng),sqlserver服務關閉,重啟動,關機的時候,對已經(jīng)設置好的復制影響比較大,可能需要重新初試化我們實驗環(huán)境(訂閱服務器)從18:46分意外停機以,第二天8:40分重啟動后,已經(jīng)設好的復制在8:40分以后又開始正常運行了,發(fā)布服務器上的堆積作業(yè)將按時間順序作用到訂閱機器上,但復制管理器里出現(xiàn)快照的錯誤提示,快照可能需要重新初試化,復制可能需要重新啟動.(我們實驗環(huán)境的機器并沒有進行快照初試化,復制仍然是成功運行的)4、刪除已經(jīng)建好的發(fā)布和定閱可以直接用delete刪除按鈕我們最好總是按先刪定閱,再刪發(fā)布,最后禁用發(fā)布的順序來操作。如果要徹底刪去sqlserver上面的復制設置,可以這樣操作:[復制]-右鍵選擇[禁用發(fā)布]-[歡迎使用禁用發(fā)布和分發(fā)向導]-[下一步]-[禁用發(fā)布]-[要在"@servername"上禁用發(fā)布]-[下一步]-[完成禁用發(fā)布和分發(fā)向導]-[完成]我們也可以用t-sql命令來完成復制中發(fā)布及訂閱的創(chuàng)建和刪除,選中已經(jīng)設好的發(fā)布和訂閱,按屬標右鍵可以[生成sql腳本]。(這里就不詳細講了,后面推薦的網(wǎng)站內有比較詳細的內容)當你試圖刪除或者變更一個table時,出現(xiàn)以下錯誤server:msg3724,level16,state2,line1cannotdropthetable'object_name'becauseitisbeingusedforreplication.比較典型的情況是該table曾經(jīng)用于復制,但是后來又刪除了復制。處理法:select*fromsysobjectswherereplinfo'0'sp_configure'allowupdates',1goreconfigurewithoverridegobegintransactionupdatesysobjectssetreplinfo='0'wherereplinfo'0'committransactiongorollbacktransactiongosp_configure'allowupdates',0goreconfigurewithoverridego

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名與空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設、安吉網(wǎng)站維護、網(wǎng)站推廣。

PHP怎么更新mysql數(shù)據(jù)庫

MySQL Update Set 更新數(shù)據(jù)

UPDATE 更新

UPDATE SET 語法用于修改更新數(shù)據(jù)表中的數(shù)據(jù)。

語法:

UPDATE tb_name SET column1 = new_value1,column2 = new_value2,… WHERE definition

該語法將數(shù)據(jù)表中符合 WHERE 條件的記錄中的 column1 的值更新為 new_value1,column2 的值更新為 new_value2 ,以此類推。如果省略 WHERE 條件,則會將表中所有記錄的 column 值進行更新。

例子:

?php

$conn = @mysql_connect("localhost","root","root123");

if (!$conn){

die("連接數(shù)據(jù)庫失?。? . mysql_error());

}

mysql_select_db("test", $conn);

mysql_query("set names 'gbk'");

$sql = "UPDATE user SET email = 'xiaoming@163.com' WHERE username = '小明'";

if(mysql_query($sql,$conn)){

echo "更新數(shù)據(jù)成功!";

} else {

echo "更新數(shù)據(jù)失?。?.mysql_error();

}

?

更新前數(shù)據(jù):

uid username password email regdate

1 admin b7e591c246d010bb2ccd77d52490c85e admin@5idev.com 1277992339

2 小明 a193686a53e4de85ee3f2ff0576adf01 xiao@163.com 1278063917

3 Jack 0193686a35e4de85ee3f2ff0567adf49 jack@gmail.com 1278061380

4 小王 e10adc3949ba59abbe56e057f20f883e 12345@163.com 1289632955

例子將 user 表中 username 為 小明 的 email 修改為 xiaoming@163.com 。

更新后數(shù)據(jù):

uid username password email regdate

1 admin b7e591c246d010bb2ccd77d52490c85e admin@5idev.com 1277992339

2 小明 a193686a53e4de85ee3f2ff0576adf01 xiaoming@163.com 1278063917

3 Jack 0193686a35e4de85ee3f2ff0567adf49 jack@gmail.com 1278061380

4 小王 e10adc3949ba59abbe56e057f20f883e 12345@163.com 1289632955

UPDATE 表達式

UPDATE 語法允許 SET 后面跟表達式。

例子 1 :

UPDATE article SET pv = pv+1 WHERE id = 123

該例子讓 id 為 123 的文章在被點擊閱讀的時候點擊量加 1 。

例子 2 :

UPDATE persondata SET age = age*2, age = age+1

該例子 SET 后面跟了兩個表達式:age = age*2(年齡加倍),age = age+1(再加 1 )。這種多個表達式的情況,是按照從左往右順序執(zhí)行的。

我原來的空間是PHP的,現(xiàn)在改成了ASP的,不知道數(shù)據(jù)庫該怎么改過來?

還是用用一種數(shù)據(jù)庫的話,數(shù)據(jù)庫的結構不用變。但是程序部分要修改,因為PHP和ASP和數(shù)據(jù)庫的連接方式都不一樣,讀取擦寫方法也不不一樣哦

如何切換php數(shù)據(jù)庫版本,如何升級到最新的mysql數(shù)據(jù)庫版本呢

建議你下載phpwamp8.8.8.8,支持切換mysql數(shù)據(jù)庫180數(shù)據(jù)庫版本隨便切換

支持鍵自定義php版本自定義數(shù)據(jù)庫,700php版本180數(shù)據(jù)庫版本隨便切換

同運行同php版本同數(shù)據(jù)庫站點管理工具功能強

將Linux服務器上的PHP版本 從5.3.8升級到5.4.0任意版本,會對現(xiàn)存的PHP程序有影響嗎?

同一個大版本(都是php5)沒事兒,直接升級問題不大。升級前習慣上備份下相關文件就好。

利用php代碼,如何讓服務器自動定時更新數(shù)據(jù)庫數(shù)據(jù)?

兄弟。。服務器是不能操作數(shù)據(jù)庫的,只有php才能操作數(shù)據(jù)庫。。應該是服務器定期執(zhí)行某個php程序,這個php程序刷新數(shù)據(jù)庫。。linux下面可以用crontab命令,把你的php程序寫在一個文件里面,然后用crontab命令定期調用。。

網(wǎng)站欄目:php程序版本數(shù)據(jù)庫變動 php版本切換
本文路徑:http://muchs.cn/article42/hgsehc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、Google定制網(wǎng)站、軟件開發(fā)、商城網(wǎng)站外貿建站

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設