顯示具有 MariaDB 標籤的文章。 顯示所有文章
顯示具有 MariaDB 標籤的文章。 顯示所有文章

2021-08-04

如何將 xampp-win 中的 mariadb 換成 mysql-community 的版本

 xampp-win 中打包的資料庫好像從某個版本開始就改成 mariadb 了,雖然 mariadb 跟 mysql 在大部份的狀況下是相似的,但…mariadb好像到目前的版本(寫文章時mariadb 最新的是10.6.3)在json的使用上跟mysql不太一樣,但我比較習慣用mysql的。

那因為在 linux 中大部份的來源庫好像是mysql的版本,所以比較沒有要從mariadb換mysql的要求…但因為目前service架在windows中,所以xampp-win是用mariadb,就找了一下資料,把mariadb換成mysql engine的方式。

環境說明:

  • xampp-win
    • apache: 2.4.48
    • db: mariadb 10.4.20
  • 要更換為mysql-community 8.0.26
    • 免安裝的版本

mariadb => mysql

2018-10-16

emoji 文字存進 mysql (mariadb) 中變問號(????)!!!!

現在手邊的這個案子真的讓我碰到不少以前顯少會想到或遇到的小麻煩,麻煩不大,但很碎。

不過會這樣碎,大概也跟我自己亂弄有關吧…

----
回正題

這次遇到的狀況是

「我用 ckeditor 在建立訊息,訊息中用了 emoji speech-ballon (💬) 符號,然後透過 php 將訊息存入 mysql 中,存好後撈出資料放在網頁上,遇到該 emoji 符號變 ???? ,四個問號;檢查資料庫中該符號的狀態,也確實是 ???? 四個問號,但並不是每一個 emoji 符號都是四個問號,也有正常顯示的。」

分析:

  1. 使用 ckeditor
  2. emoji
  3. mysql
debug:
  1. ckeditor 我用的只是單純屬前端的版本,網頁 html, php, mysql 我都有確認都有用 utf8 charset ,而且 emoji 符號在 ckeditor 的編輯區中是正常顯示的,所以 ckeditor 應該是沒問題的。
  2. emoji 本身只要你用的瀏覽器不要太舊,基本都內建,而因為 emoji 是 unicode ,所以網頁最好是用 utf8 ,而這點我確認是 ok 的,而且並不是每個 emoji 都異常。
  3. mysql 我內部設定是使用 utf8mb4 ,db, table 的編碼和 table 有中文的欄位編碼我都是設定 utf8mb4 ,但我 php pdo connection 是設定「charset=utf8」,我在「這」看到了版主說明了 utf8 不一定都是 3 bytes ,也有 4 bytes 的,而 mysql 的 utf8mb4 就是支援到了 4 bytes ,然後我在「這」查到 💬 是 4bytes ;所以,問題找到了,是我做 php pdo connection 使用 charset=utf8 的關係,雖然大部份的資料寫入資料庫跟從資料庫讀出都沒啥狀況,但遇到 utf8 4bytes 就會有異常, php 處理過程沒有報錯,但資料確實是 utf8 4bytes 塞不進 utf8 3bytes 的 connection 中…所以將 php pdo connection charset 改為 utf8mb4 後,一切都正常了。
總結:
是我懶,用 utf8mb4 是想用新的編碼也是想說可以避過一些文字上的問題,結果,最後的原因還是自己忘了把一切的 connection 改 utf8mb4 ,害自己找資料翻過頭。

2015-09-29

mysql 匯入資料時使用 LOAD DATA

MySQL 官方解說

我們很常用 csv 這種文字檔來匯入至資料表中,如果是透過 phpmyadmin 這種工具,其實過程是簡單的…但如果我們要在 php 中來使用 csv 匯入的方式咧?

MySQL 在 5.1 時有加入了匯入實體檔案的方式來匯入資料,就是 Load Data Local Infile ,對於直接匯入來說,會比載入 csv 檔,一行一行的丟去執行 SQL command 來的方便…但也是有一些參數要注意

我以簡單的來呈現一下(細的就自己看官方手冊)
1 LOAD DATA LOCAL INFILE  '檔案'
2 INTO TABLE  `表`
3 FIELDS TERMINATED BY  ',' [OPTIONALLY] ENCLOSED BY  '"' ESCAPED BY  '"'
4 LINES TERMINATED BY  '\r\n'
5 IGNORE 1 LINES
 一行一行來解釋
1) 是"載入本機檔案"
2) 要被匯入的"表"
3) 欄位格式設定
    分隔符號:csv 大部份都是半型逗號,但有的會用 \t
    每一欄的包裝符號:OPTIONALLY 沒加上的話,每一欄都會使用半形雙引號包起來;但如果加上了 OPTIONALLY ,那只會是文字表現的欄位才會用包裝符號包起來,其他就不會包。
    跳脫字元:指的就是如果欄位資料中的原始內容就有使用到「包裝符號」,那就要在原始內容前加上跳脫字元,告知系統跳脫字元後的字元是屬除資料,而不是「包裝符號」,沒特別設定的話,預設是 \
4) 一行資料的結尾符號:如果我們是使用 excel 匯出 csv,一般都是 \r\n 為行尾符號,但要注意有時會是只有 \n
5) 跳過幾行:當我們用 excel 匯出 csv 時,大部份第一行都會是「欄位名稱」,這對匯入資料時,這首行是無用的,所以可以設定跳過 1 行。

2014-04-12

[MariaDB]:一個與MySQL同宗,但似乎更佳的DB-Engine---由捨棄MySQL無痛改用MariaDB的教學篇

開宗明義:為了怕之後MySQL變成付費制度,所以改用同宗的MariaDB

經[MySQL 創辦人 Michael Widenius 說:「沒有任何理由再用MySQL」]代入,連google都在去年開始將內部的MySQL部份轉移到MariaDB了,所以,身為一知半解的我們,也該試著玩一玩。

比較文:https://mariadb.com/kb/en/mariadb-vs-mysql-features/
(在文中有說明,MariaDB在10.0之後加入支援NoSQL engine)

需要注意的是,MariaDB現今有5.5與10.0的版本方向(5.5對應的也就是MySQL 5.5,10.0就是MySQL 5.6),分方向別其實應該就是要與MySQL的相關性分離…而且10.0要加入NoSQL支援,也就是分離MySQL了…

參考文:

這邊安裝的是MariaDB 5.5,主要是無痛轉移,所以不用MariaDB 10.0(因為我也不確定10版可不可以等於無痛,安全起見,先用5.5)

主要系統:CentOS 6.5 x86