MySQL

2008年1月16日,Sun(昇陽電腦)正式收購MySQL。2009年4月20日,甲骨文公司宣布收購昇陽電腦。

在 MySQL 併入 Oracle 之後,許多不相信 Oracle 讓 MySQL 繼續和現狀一樣保持下,也擔心 MySQL 不會再是開放原始碼的免費軟體,所以,有一批 MySQL 的開發者就另外去開發了一叫 MariaDB 的資料庫系統。

5碼 Unicode 搜尋問題

mysql 排序的作法,似乎每一個 term 有一個權重 (weight) 設計,而這個權重設計在5碼unicode字 (supplementary characters) 時,mysql 讓他們全部都一樣,所以比對時,就會相同。

由於這是跟 collation 有關,設 utf8mb4_unicode_ui 或 utfmb4_general_ci 都不行,因為基本上這是兩個都還是做了一些比對(排序)的手腳, ex: Ä = A, Ö = O , Ü = U

所以,改用 utf8mb4_bin(單純用 code point 比對), 要求系統不做這些動作就可以了。

太長的資料被自動砍掉

mysql 會自動把insert時的過長資料,自動砍短,而不回報錯誤.

這是server端可以設定的。

有個參數叫, sql_mode 預設是空白, 表示限制很小,意思就是說,不符合格式的輸入,

mysql都會「修改」儘量讓他符合,然後放入資料庫。

例如:限制>=0的欄位,若要塞入-5,mysql資料庫會幫你改用0輸入....

所以,應該要把 sql_mode設為 TRADITIONAL

​讓他的限制條件跟我們一般的期望相同。

這裡是​網路po文:http://www.mysqlfaqs.net/mysql-faqs/Client-Server-Commands/What-is-sql-mode-in-MySQL-and-how-can-we-set-it

這裡是原廠手冊:http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html

Storage Engine