鍍金池/ 問答/PHP  數(shù)據(jù)庫/ laravel 5.5,對于mysql-proxy的sql操作一直報(bào)錯(cuò)?

laravel 5.5,對于mysql-proxy的sql操作一直報(bào)錯(cuò)?

經(jīng)過檢測mysql-proxy經(jīng)常自動(dòng)掛掉重啟,已棄用。改用mycat



在navicat客戶端中登錄mysql-proxy進(jìn)行操作正常
在laravel中執(zhí)行任何sql語句都會報(bào)錯(cuò)

SQLSTATE[HY000]: General error: 1243 Unknown prepared statement handler (X) given to 
mysqld_stmt_execute

以下為原問題

最近在做畢業(yè)設(shè)計(jì)項(xiàng)目。
Mysql讀寫分離,主從復(fù)制。
Mysql-proxy在A服務(wù)器,B服務(wù)器 Master負(fù)責(zé)寫,C服務(wù)器 Slave負(fù)責(zé)讀。
在navicat客戶端中登錄mysql-proxy進(jìn)行操作正常
執(zhí)行php artisan migrate拋出如下錯(cuò)誤

PS C:\phpStudy\WWW\XXX\test> php artisan migrate
In Connection.php line 647:
  SQLSTATE[HY000]: General error: 1243 Unknown prepared statement handler (2) given to 
mysqld_stmt_execute (SQL: select * from information_schema.tables where table_schema = 
shop and table_name = migrations)
In MySqlConnector.php line 57:
  SQLSTATE[HY000]: General error: 1243 Unknown prepared statement handler (2) given to 
mysqld_stmt_execute

百度了一下說是權(quán)限問題?我看了數(shù)據(jù)庫information_schema中的表tables,確實(shí)沒有table_schema = shop and table_name = migrations。
這種怎么解決?Google沒搜出來。
錯(cuò)誤如圖
*
dzx是主從復(fù)制賬戶,proxy是讀寫分離的代理賬戶
proxy配置如圖
圖片描述
---
賬戶權(quán)限如圖
數(shù)據(jù)庫權(quán)限

回答
編輯回答
拼未來

你好?我最近也在玩laravel想用mycat做讀寫分離可是怎么樣配置連接呢

2017年12月9日 10:19
編輯回答
溫衫

其實(shí)laravel自帶讀寫分離的配置.... 在數(shù)據(jù)庫配置中,可以寫一個(gè): read配置和write配置.

'mysql' => [
    'read' => [
        'host' => '192.168.1.1',
        //可以配置不同的賬號密碼端口
    ],
    'write' => [
        'host' => '196.168.1.2'
        //可以配置不同的賬號密碼端口
    ],
    'driver'    => 'mysql',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
],
2017年6月23日 03:27
編輯回答
過客

感謝信任與邀請 , 下午有時(shí)間我看下 . 下午修改答案 . 公司上午上線一項(xiàng)內(nèi)容 .

--------------------------- 下午補(bǔ)充 -----------------------------

您好 , 我剛看了下您的問題 , 首先呢 , 看起來是Lavarel(應(yīng)該沒拼錯(cuò))框架一些內(nèi)容 , 可惜我沒用過L框架 . 不過 , 我有幾點(diǎn)或許能幫到你 .
1 . 看起來php的pdo和mysql擴(kuò)展都沒問題 .
2 . 其次是你在proxy上已經(jīng)測試通過了 , 說明mysql配置都是沒問題的 .
3 . information_schema庫是mysql的必備核心的一個(gè)庫 , 其中放的是數(shù)據(jù)表數(shù)據(jù)庫的信息 . 那么select * from information_schema where table_schema=shop實(shí)際上要要查詢您的mysql中有沒有一個(gè)叫shop的數(shù)據(jù)庫 , 再加上 and table_name = migrations條件就是說要找mysql中shop庫中的migrations表 . 你可以檢查一下是否有這個(gè)庫和這個(gè)表 .

別的 , 我也暫時(shí)幫不了你了 .

2018年6月8日 11:31
編輯回答
涼汐

我遇到了一樣的問題,似乎mysql-proxy無法接受預(yù)處理語句
雖然題主已經(jīng)改了,還是留下一個(gè)解決辦法
在config/database.php中設(shè)置PDO模擬的預(yù)處理語句,然后發(fā)給mysql正常的sql

            'options'   =>[
                PDO::ATTR_EMULATE_PREPARES => true,
            ],

經(jīng)過簡單測試,可以正常執(zhí)行CURD操作

2017年4月25日 01:20