求救 MySQL 資料欄位格式問題


#1

各位大大好!

在下是新手碰到一個棘手問題如下,請教高手指點。

未命名-3


#2

這位仁兄 … 我完全不知道你到底在搞啥 …

首先,我這邊其實很不喜歡回答 Windows 相關的問題,因為你的問題會變成非常多維度,且非常不單純

一般這種資料庫問題其實只需要詢問類似 PHP 的語系是否正確,PHP 哪個版本,PHP 怎樣設定,兩個是同一個 RDBMS 還是不同電腦,MySQL 兩台的版本為何,就能判斷怎麼解

但你配上 Windows 後還要再問你版本,系統怎樣配置 / 語系為何,是自己裝 MySQL 還是用類似 WAMP 偷懶的包裝,再來因為 PHP 在 Windows 下很容易把 Big5 當作 UTF8 寫入 DB,甚至顛倒造成 DB 一票亂碼卻能正確執行的鬼問題,所以還要問是原本就用 PHP 來開發,還是你單純的用 phpMyAdmin 來管 DB 而已,然而 phpMyAdmin 匯入匯出也可能會出現上述顛倒的問題( Linux 系列應該都沒 Big5 相關的問題 … )

最後 … 為何一定要用 phpMyAdmin 而不是 95%+ 管理者在用的 mysqldump & mysql client 指令,兩行指令打完不會超過 100 個字元,使用 PHP 這種很容易出事的東西來做中介轉換你不是自找麻煩嗎? …(我承認它有些功能很好用,但通常會把自己弄得更糟而已,類似它沒有 migration 的功能,所以沒辦法 rollback,且其存在本身就是一個最高等級的攻擊弱點 … )

備份還原的文章很多,類似

https://code.yidas.com/mysqldump/

至於 MySQL 的資料庫複製最簡單的也就是備份後,新增新的資料庫,還原到該對象即可,所以你會備份還原,你就會複製了(切記不能使用 --all-databases 選項,因為該選項會自動備份 / 覆蓋全部的資料庫,包括帳號密碼之類的設定哩)

所以以上,請你描述清楚,否則我觀落陰的能力真的沒那麼強就是 …

我以前也用 Windows 開發 Web,我以前也用 phpMyAdmin 管資料庫,但現在我已經都拋棄光了,一切順利的很 … 而你呢?然而和其他 Windows 發問一樣的,附加轉這篇文章


#3

各位大大 我經提點才瞭解自己的問題描述不清楚,是應該改善,如今 新增說明如下圖(二):

未命名-4

我從PHP My Admin 上傳 ***db 檔案 之後 資料就是不完整 如圖(一)


#4

mysqldump -u root -p db_name > backup.sql;

能否先請教一下:

上述這一段指令 據說是匯入"資料庫到 SQL" 的指令, 在我的BSD主機執行回應 “no such file…”

須要請教的是 “backup.sql” 是不是必須要指定路徑 ,若是該如何寫? 感嗯!

PS:對不起 我的問題比較笨,因為我剛初學。


#5

抱歉,昨天去參加啤酒趴結果喝到掛掉了哈哈 …

我先說明一下

mysqldump -u root -p db_name > backup.sql;

mysqldump 如同字面是指把資料庫"匯出",然後輸入 -u 帳號-p 之後要輸入密碼,db_name 是你的來源資料庫名稱, > 指的是把 stdout 存檔到哪個檔案路徑,backup.sql 處是 path 沒錯

mysql -u root -p db_name < backup.sql;

mysql 是 client 支援外部 stdin,所以這句話要從後面開始講,< 處是把 backup.sql 變成 stdin,執行指令是 mysql 將會接收到整份 backup.sql 的傳入,之後使用 -u -p db_name 同上述說明

所以你可以去查 stdin / stdout / stderr 的用法和為何存在,然而你就會知道為何這是備份和還原的語法了,或是應該說你該花些時間去了解 bash …

然而我想你是沒有 mysqldump 而不是無法寫入 backup.sql,因為如果是無法寫入應該是 permission denied 或是相關的 error message 而非 no such file

請你先確定有裝好 mysql-client 後,才有 mysqldump 這個指令可以用,簡單的來說你要先裝軟體唄?再來有另外一個可能是你沒有建立 PATH 所以即使有安裝,但你也沒辦法憑空執行,需要輸入完整的 mysqldump 這個執行程式的完整位置就是,& BSD 其實不建議給新手玩 … 為何要選 BSD 系統?其實目前 BSD 市佔率應該不高才是,而且安裝一票東西都超麻煩的 …

你應該可以先用 mysqldump --help 之類的指令來檢查 mysqldump 這個指令是否存在之類的(會跑出一票指令說明),或是下類似 which mysqldump 會跑出路徑就是有安裝了,之後才下 mysqldump 的指令唄 …

最後,不用加註你的問題比較笨之類的,我們只是先來後到的關係罷了,單純我希望你找到對的方向(類似拋棄掉 windows 或是不要用 phpMyAdmin),並把問題描述清楚罷了,且任何問題都能幫助相同問題的人,所以多多益善就是,以上


#6

謝謝 回覆 說明! 以下是我嘗試操作的結果畫面:

我不懂的地方有:

  1. 我執行 mysqldump -u root -p db_basic > 123.sql 這樣有錯嗎? 若是正確那執行以後 我應該到哪裡去找到我的123.sql

2`. 若我要執行匯入 此段命令 對嗎? mysql -u root -p db_123 > 123.sql (如果我要指定虛擬磁碟中backup 資料夾中的 abc.sql 那我應該如何寫正確的路徑指令)

IMG_7843

PS:得到熱心回應感到非常溫暖,若下次再參加啤酒趴需要槍手掩護,在下願意效犬馬之勞,哈哈…(不是愛喝一族)。


#7

很明顯的你打錯指令了 … Orz" 請戴放大鏡再看一次|||

mysqldump -u root -p db_basic > 123.sql
mysqldump -u {MySQL管理帳號} -p {MySQL操作的資料庫名稱} > {檔名}

你的顯示訊息(錯誤訊息)內有 “error” 不是?因為你參數打錯,user 會變成你的登入帳號 james 而非 root … 所以從來一次唄?

其餘的我建議你去看 bash / shell 相關教學,類似基本的 Linux / Unix 的檔案操作之類的,也有很多的書在解釋這類的東西,否則我需要寫整票的說明文件唄 … Orz" ((至少三本書的量,你可以不學 bash script 的操作,但一般的 bash 指令還是必須要懂才行,類似

這邊寫的所有指令,必須要知道才行 … (( 這個是這邊的 Google Doc 教學文件內的其中一項之類的

so~ 抱歉我無法教你 bash 或是基本的 Linux 應用,那個你必須自己跨越才行


#8

非常感謝!熱心協助 ,目前問題已經獲得解決。謝謝!感嗯!