網頁

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

2017年10月7日 星期六

連接DB時出現Warning: mysql_connect(): [2002] No such file or directory

買了台新的MacBook Pro,重建PHP及MariaDB的環境,沒想到卻是惡夢的開始,最後一直卡在〞Warning: mysql_connect(): [2002] No such file or directory〞的問題,一開始以為是MariaDB有問題,最後才發現是確實是MariaDB,不過主要是因為他本身對於localhost的解析有問題,MacBook Pro最新的MacOS high Serria內建的PHP並沒有設定php.ini,裡頭的pdo_mysql.default_socket設定成mysql.socket的所在位置,我在.my.conf中設定
socket=/tmp/mysql.sock

而在php.ini中設定底下的值
pdo_mysql.default_socket=/tmp/mysql.sock

這樣PHP中的mysqli就可以new了,不過使用phpMyadmin的話依然會有問題,直接COPY裡頭的config.sample.inc.php,改成底下
$cfg['Servers'][$i]['host'] = '127.0.0.1';

這樣就可以使用了,估計這做法只是work around

參考網址:
Warning: mysql_connect(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock) in


2016年5月24日 星期二

修正laravel中Prepared statement needs to be re-prepared

最近一個案子將對方的整個DB匯出,重新匯入自己的DB後,啟動網站一直出現底下訊息
General error: 1615 Prepared statement needs to be re-prepared

看起來跟msyql本身的設定有關,在.my.cnf下加入底下設定,重新啟動即可

table_open_cache_instances=2 #http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_table_open_cache_instances
table_open_cache=16384       #http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_table_open_cache
table_definition_cache=16384 #http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_table_definition_cache
tmp_table_size=64M           #http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_tmp_table_size
join_buffer_size=512k        #http://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_join_buffer_size

參考網址:
http://bugs.mysql.com/bug.php?id=42041
The Abstracts of My Brain
MySQL優化(mysql ERROR 1040 (00000): Too many connections)

2016年3月17日 星期四

MariaDB中發生Cannot load from mysql.proc. The table is probably corrupted

最近改使用JetBrain的DataGrip試試,但一直發生"Cannot load from mysql.proc. The table is probably corrupted",以致於無法載入table,但其他都正常。查了下發現官網也有呈述這類問題,看起來跟mysql的版本有關,只要升級後就可以了,如下圖:

取自:MySQL to MariaDB migration: handling privilege table differences when using mysqldump

所以執行底下指令
$ mysql_upgrade --force -u root -p
Enter password:
MySQL upgrade detected
Phase 1/6: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats                                 OK
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.gtid_slave_pos                               OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
#.......忽略
Phase 6/6: Running 'FLUSH PRIVILEGES'
OK

看到回應OK後再試試就沒問題了

參考網址:
MySQL to MariaDB migration: handling privilege table differences when using mysqldump

Mac上使用HomeBrew安裝MariaDB

大致步驟是
  1. 備份所有資料,若使用者過多應備份使用者資訊
  2. 使用HomeBrew安裝MariaDB
執行
$ mysqldump -uroot -p --all-databases --flush-logs --master-data=2 > /Users/alvin/all_databases.sql
Enter password: 
mysqldump: Error: Binlogging on server not active

出現"Binlogging on server not active"的Error,查了下Google,看了mysqldump: Error: Binlogging on server not active才知道少設定了log-bin,要修改my.cnf,印象中我的是直接下載mysql,在使用者資料夾中會存在個.my.cnf直接修改即可。
$ vim ~/.my.cnf
#加入
log-bin=mysql-bin
#重啟mysql server
$ /usr/local/mysql/support-files/mysql.server restart
#再dump一次
$ mysqldump -uroot -p --all-databases --flush-logs --master-data=2 > /Users/alvin/all_databases.sql
這樣就備份好了


安裝好後,針對.my.cnf要確認裡頭設定log-error
$ vim ~/.my.cnf
log-error=/tmp/mysql.log

再執行底下這行,回應SUCCESS就ok了
$ mysql.server start
Starting MySQL
. SUCCESS!

參考網址:
Installing MariaDB 10.0.10 on Mac OS X with Homebrew
OSX How To: Uninstall native MySQL and install MariaDB via Homebrew
mysqldump: Error: Binlogging on server not active
mysqld_safe