mysql調試技巧mysql(mysql的操作方法)

本文目錄一覽:

如何安裝並測試MySQL

PHP MySQL Linux現在已逐漸成為小型web服務器的一種經典組合。在Windows環境下構築和調試MySQL數據庫是許多網站研發者的一種最好選擇。本人在Windows98環境下初學MySQL,現將學習過程和經驗總結出來供大家參考。

1、下載mysql-3.23.35-win.zip並解壓;

2、運行setup.exe;選擇d:mysql,”tyical install”

3、啟動mysql,有如下方法:方法一:使用winmysqladmin

1)、進入d::mysqlbin目錄,運行winmysqladmin.exe,在屏幕右下角的任務欄內會有一個帶紅色的圖符

2)、鼠標左鍵點擊該圖符,選擇“show me”,出現“WinMySQLAdmin”操作界面;首次運行時會中間會出現一個對話框需要輸入並配置您的用戶名和口令

3)、選擇“My.INI setup”

4)、在“mysqld file”中選擇“mysqld-opt”(win9x)或“mysqld-nt”(winNT)

5)、選擇“Pick-up or Edit my.ini values”能夠在右邊窗口內對您的my.ini文檔進行編輯

6)、選擇“Save Modification”保存您的my.ini文檔

7)、假如您想快速使用winmysqladmin(開機時自動運行),選擇“Create ShortCut on Start Menu”

8)、測試:

進入DOS界面;

在d:mysqlbin目錄下運行mysql,進入mysql交互操作界面

輸入show databases並回車,屏幕顯示出當前已有的兩個數據庫mysql和test方法二:不使用winmysqladmin

1)、在DOS窗口下,進入d:/mysql/bin目錄

2)、win9X下)運行:mysqld在NT下運行:

mysqld-nt –standalone

3)、此後,mysql在後台運行

4)、測試mysql:(在d:/mysql/bin目錄下)

a)、mysqlshow 正常時顯示已有的兩個數據庫mysql和test

b)、mysqlshow -u root mysql 正常時顯示數據庫mysql里的五個表:columns_priv,db,host,tables_priv,user

c)、mysqladmin version status proc 顯示版本號、狀態、進程信息等

d)、mysql test 進入mysql操作界面,當前數據庫為test

4、至此,MySQL已成功安裝,接着能夠熟悉MySQL的常用命令並創建自己的數據庫了。

如何在Windows下編譯或調試MySQL

用vs code 就可以了。

Visual Studio Code

Visual Studio Code(簡稱VS Code)是由微軟開發的,同時支持Windows、Linux和macOS操作系統的開源文本編輯器。它支持調試,內置了Git 版本控制功能,同時也具有開發環境功能,例如代碼補全(類似於IntelliSense)、代碼片段、代碼重構等。該編輯器支持用戶自定義配置,例如改變主題顏色、鍵盤快捷方式、編輯器屬性和其他參數,還支持擴展程序並在編輯器中內置了擴展程序管理的功能。

安裝LLDB

LLDB是LLVM編譯器的一部分,推薦使用Homebrew安裝LLVM工具集,不建議使用系統自帶的LLDB,安裝前必須先創建證書否則無法安裝,步驟如下:

創建完成後,開始安裝LLVM

brew install llvm –with-python@2 –with-lldb

安裝插件

VS Code自帶有debug功能,這裡我推薦使用LLDB Debugger插件。

接下來,為項目配置調試參數。

配置調試參數

使用VS Code打開MySQL源碼目錄,在側邊欄選擇debug欄目,添加配置,program輸入需要調試的程序路徑,這裡選擇你編譯好的mysqld路徑,args輸入程序啟動所需的參數,通常會指定mysqld的配置文件。這樣就配置好了,是不是很簡單。

啟動調試

點擊啟動按鈕,啟動後如果沒有設置斷點會mysqld會正常啟動,如果觸發了斷點會如下圖顯示。

整個調試窗口基本分為六部分,所有的調試操作都在這裡完成:

1: 顯示變量信息

2: 設置重點關注的變量

3: 顯示調用棧信息

4: 設置斷點信息,在代碼行號前也可以設置斷點

5: 代碼顯示區域,上方是調試按鈕,包括 continue/stepover/step in/step out/restart/stop

6: 調試終端輸入輸出區

斷點設置

在代碼行號前點擊即可在該行為設置斷點,也可以根據條件設置斷點。以設置ConditionalBreakpoint為例,當程序啟動後會按照你設置的條件表達式判斷是否觸發斷點。

Conditional Breakpoint這種方式用在目標變量達到某條件時觸發斷點,其餘則跳過繼續執行。比如:設置變量等於目標表名時觸發斷點,其餘表則跳過,相對函數名斷點省去很多手工跳過操作。

遠程調試

假如你想調試遠程Linux服務器上的MySQL上面的方法就不合適了,這時需要遠程調試。lldb和gdb都支持遠程調試,這裡以lldb為例。

需要先在遠程主機上安裝lldb,使用yum安裝,源地址在這裡

remote$ yum install -y llvm-toolset-7

安裝完成後,啟動lldb-server

remote$ /opt/rh/llvm-toolset-7/root/usr/bin/lldb-serverplatform –listen “*:9191” –server

接下來,在VS Code調試界面中新增配置項。

{

“type”: “lldb”,

“request”: “attach”,

“name”: “Remote attach”,

“program”: “~/mysql5626/usr/local/mysql/bin/mysqld”,

“pid”:”target_pid”,

“initCommands”: [

“platform select remote-linux”,

“platform connect connect://remote_host:9191”

],

“sourceMap”: {

“/export/home/pb2/build/sb_0-15908961-1436910670.17/mysql-5.6.26”: “/Users/hongbin/workbench/mysql-server”

}

},

program: 本機也要拷貝一份目標程序,加載

pid: 填寫遠程主機的mysqld進程id

sourceMap: 填寫mysqld編譯的代碼路徑與本機代碼庫路徑的映射,這樣調試時代碼才可以和程序關聯在一起看

注意:記得調試前將代碼切換到與目標程序版本一致的branch

新手如何調試 MySQL?看這一篇就夠了

前幾天看到姜老師的舊文 用 VSCode 編譯和調試 MySQL,每個 DBA 都應 get 的小技能[1] , 文末留了一個思考題,如何修改源碼,自定義版本,使得 select version() 輸出自定義內容

調試過程參考 macOS VSCode 編譯調試 MySQL 5.7[2]

內部 Item 對象參考 從SQL語句到MySQL內部對象[3]

源碼面前沒有秘密,建義對 DB 感興趣的嘗試 debug 調試。本文環境為 mac + vscode + lldb

vscode 插件:

mysql 源碼:

補丁: MySQL = 8.0.21 需要對 cmake/mysql_version.cmake 文件打補丁 (沒有嚴格測試所有版本)

創建 cmake-build-debug 目錄,後續 mysql 編譯結果,以及啟動後生成的文件都在這裡

在 mysql 工程目錄下面創建 .vscode/settings.json 文件

內容沒啥好說的,都是指定目錄及 boost 配置,其中 WITH_DEBUG 打開 debug 模式,會在 /tmp/debug.trace 生成 debug 信息

View – Command Palette – CMake: Configure 執行後生成 cmake 配置

View – Command Palette – CMake: Build 編譯生成最終 mysql 相關命令

發現老版本編譯很麻煩,各種報錯,mysql 5.7 代碼量遠超過 5.5, 只能硬着頭皮看 5.7

首先初始化 my.cnf 配置,簡單的就可以,共它均默認

初始化數據文件,非安全模式,調試用

由於用 vscode 接管 mysql, 所以需要配置 .vscode/launch.json

然後點擊 run and debug mysqld

mysql 啟動,看到輸出日誌無異常,此時可以用 mysql-client 連接

首先在 sql_parser.cc:5435 處打斷點

mysql_parse 是 sql 處理的入口,至於 tcp connection 連接先可以忽略

執行上述 sql 自動跳轉到斷點處, Step Into , Step Over , Step Out 這些調試熟悉下即可

接下來分別調用主要函數: mysql_execute_command , execute_sqlcom_select , handle_query , select-join-exec() , Query_result_send::send_data , Item::send , Item_string:val_str , Protocol_text::store , net_send_ok

啟動 mysql 時 init_common_variables 會初始化一堆變量,其中會調用 set_server_version 生成版本信息,修改這個就可以

看好條件編譯的是哪塊,修改即可, 重新 CMake: Build 編譯再運行

這裡不做過深分析,簡單講

sql_yacc.cc 函數 PTI_function_call_generic_ident_sys 解析 sql, 識別出 version() 是一個函數調用

find_native_function_builder 查找 hash 表,找到對應 version 函數註冊的單例工廠函數

mysql 啟動時調用 item_create_init 將這些函數 builder 註冊到 hash 表 native_functions_hash

MySQL 代碼太龐大,5.1 大約 100w 行,5.5 130w 行,5.7 以後 330w 行,只能挑重點讀源碼。最近很多群里的人在背八股,沒必要,有那時間學着調試下源碼,讀讀多好

原文出處:

mysql存儲過程如何調試

可以使用調試工具:

dbForge Studio for MySQL

網上有很多教程,你可以試下

mysql怎麼調試存儲過程

mysql調試存儲過程具體方法:

在你的存儲過程中加入如下語句:

SELECT

變量1,變量2;

然後用mysql自帶的cmd程序進入mysql

下。

call

你的存儲過程名(輸入參數1,@輸出參數);(注:這裡幫助下新同學,如果你的存儲過程有輸出變量,那麼在這裡只需要加

@

然後跟任意變量名即可);

即可發現你的變量值被打印到了cmd下

mysql源碼中的debug調試信息怎麼使用

1下載源碼

2編譯

CFLAGS=”-g

–O0”

CXX=gcc

CXXFLAGS=”-g

–O0

-felide-constructors

-fno-exceptions

-fno-rtti”

cmake

.

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

-DDEFAULT_CHARSET=utf8

-DDEFAULT_COLLATION=utf8_general_ci

-DWITH_DEBUG=1

make

make

install

3eclipse編譯配置

1)在eclipse中建立一個c++

empty

project。

2)選中上面建立的project,新建文件夾,引入代碼。

3)設置編譯源目錄Build

directory,即cmake生成的Makefile所在的目錄。

我採用的方法是將my.cnf配置文件放在了/etc下面,這樣不需要在eclipse中設置mysql的運行參數

下面是注意的事項,我的eclipse使用baixyu這個帳號運行的,所以在調試的時候,my.cnf中配置的數據目錄的屬主要配置成baixyu而不是別的,否則在運行中總會提示沒有權限的問題。下面是配置好的截圖:

原創文章,作者:IDSFN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/325405.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IDSFN的頭像IDSFN
上一篇 2025-01-13 13:24
下一篇 2025-01-13 13:24

相關推薦

  • 如何修改mysql的端口號

    本文將介紹如何修改mysql的端口號,方便開發者根據實際需求配置對應端口號。 一、為什麼需要修改mysql端口號 默認情況下,mysql使用的端口號是3306。在某些情況下,我們需…

    編程 2025-04-29
  • 使用vscode建立UML圖的實踐和技巧

    本文將重點介紹在使用vscode在軟件開發中如何建立UML圖,並且給出操作交互和技巧的指導。 一、概述 在軟件開發中,UML圖是必不可少的重要工具之一。它為軟件架構和各種設計模式的…

    編程 2025-04-29
  • Python操作MySQL

    本文將從以下幾個方面對Python操作MySQL進行詳細闡述: 一、連接MySQL數據庫 在使用Python操作MySQL之前,我們需要先連接MySQL數據庫。在Python中,我…

    編程 2025-04-29
  • MySQL遞歸函數的用法

    本文將從多個方面對MySQL遞歸函數的用法做詳細的闡述,包括函數的定義、使用方法、示例及注意事項。 一、遞歸函數的定義 遞歸函數是指在函數內部調用自身的函數。MySQL提供了CRE…

    編程 2025-04-29
  • 優秀周記1000字的撰寫思路與技巧

    優秀周記是每個編程開發工程師記錄自己工作生活的最佳方式之一。本篇文章將從周記的重要性、撰寫思路、撰寫技巧以及周記的示例代碼等角度進行闡述。 一、周記的重要性 作為一名編程開發工程師…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • MySQL左連接索引不生效問題解決

    在MySQL數據庫中,經常會使用左連接查詢操作,但是左連接查詢中索引不生效的情況也比較常見。本文將從多個方面探討MySQL左連接索引不生效問題,並給出相應的解決方法。 一、索引的作…

    編程 2025-04-28
  • 堆疊圖配色技巧分享

    堆疊圖是數據可視化中常用的一種表現形式,而配色則是影響堆疊圖觀感和傳達信息的重要因素之一。本文將分享一些堆疊圖配色的技巧,幫助你創造更好的數據可視化。 一、色彩搭配原則 色彩是我們…

    編程 2025-04-27
  • 使用uring_cmd提高開發效率的技巧

    對於編程開發工程師來說,提高效率一直是致力追求的目標。本文將深度解析如何使用uring_cmd,提升工作效率。 一、常用命令 uring_cmd是一個非常強大的命令行工具,但是大部…

    編程 2025-04-27
  • CentOS 7在線安裝MySQL 8

    在本文中,我們將介紹如何在CentOS 7操作系統中在線安裝MySQL 8。我們會從安裝環境的準備開始,到安裝MySQL 8的過程進行詳細的闡述。 一、環境準備 在進行MySQL …

    編程 2025-04-27

發表回復

登錄後才能評論