mysql 2014錯誤碼 python3呼叫過程

2021-08-15 05:45:09 字數 2182 閱讀 9123

python3呼叫過程

今天學了半天mysql了,遇到了乙個問題,有必要來進行總結一下:

先附上**

delimiter \\

create

procedure test(

out max_price decimal(8,2)

)begin

select

max(prod_price) into max_price

from products;

end\\

call test(

@max_price

);delimiter ;

select @max_price;

這個**本身是沒有問題的,由於我的操作失誤,當時沒有寫into,沒有把結果放進變數裡面,然後後面再次執行sql語句時候就出現了這樣的錯誤:

mysql 2014的錯誤碼

commands out of sync; you can\』t run this command now

翻譯一下:命令超出了同步,不能執行現在的命令。

原因是,這個sql語句執行之後,返回了乙個結果集,但是並沒有把結果集取出來,因為select之後沒有into進變數裡面,再次執行新的sql語句,之後,為了進一步了解,我對sql中的變數進行了了解。

變數的理解:

變數和我們日常程式設計裡面所用到的變數其實是一樣的,它也有作用域。一種是在begin end中declare語句寫的變數,那個可以看作是區域性變數,作用範圍在這個過程裡面,其實我覺得過程裡面的引數也是區域性變數,出了這個過程,它就不存在了,就像日常程式設計裡面的引數傳遞,很像把?

之後還有一種變數,另外有種變數叫做會話變數(session variable),也叫做使用者定義的變數(user defined variable)。這種變數要在變數名稱前面加上「@」符號,叫做會話變數,代表整個會話過程他都是有作用的,這個有點類似於全域性變數一樣。這種變數用途比較廣,因為只要在乙個會話內(就是某個應用的乙個連線過程中),這個變數可以在被呼叫的儲存過程或者**之間共享資料。

解決:因為我這邊用的時候是用的@會話變數,導致的錯誤,所以我的解決方法是emmm…由於我還是個小菜鳥,這個問題我的解決方案是。直接把這個會話關了,就是退出mysql 重進下,然後再修改這個,退出了,會話自然就關閉了,這個會話變數裡面的啥東西,也就沒了,qaq大家不要學我,我這個解決方案太不專業了。。因為我沒有找到更好的,或者說我能理解的方法emmm

總在mysql裡面呼叫這個過程,感覺不爽,得試一把用應用程式呼叫。

在幾十天前,我在某個地方看到的,留了個印象,它說最好在資料庫中把資料處理好,然後再傳給應用程式,因為把資料全部傳給應用程式,然後讓應用程式再對那些資料進行處理,明顯的前者的效能優於後者,今天我終於重現了!○( ^皿^)っhiahia…

過程就是這個作用,有木有?過程先把一堆sql語句給你統統編好,然後再將結果賦值給某個變數,或者某些變數,然後由應用程式直接呼叫過程,讀取變數中的值,就不用把大量sql語句放在游標中執行了~

下面獻上我嘗試的**:

import pymysql

max_price = ''

conn = pymysql.connect(

host='localhost',

user='root',

password='lyy1314520',

database='crashcourse'

)cursor = conn.cursor()

# @代表會話變數,_test_是過程名字,0是傳入的第0個引數也就是下面的max_price

sql = '''

select @_test_0

'''# 呼叫過程,名字'test' 後面的是元組,裡面放引數,單個元組有,

cursor.callproc('test',(max_price,))

cursor.execute(sql)

result = cursor.fetchall()

print(result)

cursor.close()

conn.close()

這個單個變數用元組的時候要加,號!太關鍵了啊!我咋說這個程式無限報錯呢!欲哭無淚,最終成功得到了結果

((decimal(『55.00』),),)

mysql624錯誤碼 mysql錯誤碼問題

1級2018 11 18 回答 這裡列出部分,詳情可參考 訊息 無法建立檔案 s errno d 錯誤 1005 sqlstate hy000 er cant create table 訊息 無法建立表 s errno d 錯誤 1006 sqlstate hy000 er cant create ...

錯誤碼 使用 Go 定義錯誤碼

不管在什麼系統中,定義錯誤碼都是必不可少的.錯誤碼可以幫助定義問題,通常錯誤碼設計為某種模式結構,可以判斷出錯誤的級別,錯誤的模組和具體錯誤資訊.乙個良好結構的錯誤碼有助於簡化問題描述,當前設計的錯誤碼共有五位,結構如下 1 00 01 服務級別 模組 具體錯誤 第一位是服務級別,1 為系統錯誤,2...

mysql連線錯誤碼 Mysql連線錯誤

function getmysqlconnection host,user,pass,database else mysqlerror false 我已經建立了乙個如上所述的函式,它在給定的mysql使用者憑證上實現連線 我通過使用實現了這個功能 require myfunc.php getmysq...