MySQL版本:8.0.15
操作系統:Windows 10
ERROR 1148 (42000): The used command is not allowed with this MySQL version
將本地文件導入數據庫時,使用命令LOAD DATA LOCAL INFILE
,遇到上述錯誤,這是因為mysql默認關閉本地文件導入功能,Security Issues with LOAD DATA LOCAL
解決方法
登錄mysql后,輸入命令:set global local_infile = 'ON';
退出,重新登錄:mysql --local-infile=1 -u root -p
ERROR 2 (HY000): File 'D:pet.txt' not found (OS errno 2 - No such file or directory)
在練習文件導入時,使用命令LOAD DATA LOCAL INFILE "D:\pet.txt" INTO TABLE pet;
遇到了這個錯誤,而文件確實存放在D盤下,其實只是反斜杠號的問題,應該寫兩個
解決方法
LOAD DATA LOCAL INFILE "D:\\pet.txt" INTO TABLE pet;
ERROR 1300 (HY000): Invalid utf8mb4 character string: ''
導入帶中文字符的txt文件到mysql時,遇到上述錯誤。txt文件的默認編碼格式為ANSI
,而數據庫的編碼格式在初始化時一般會設置成utf-8
(實際上我在安裝MySQL 8.0時,按照提示改成了UTF8MB4
),導入英文數據時沒有發現問題,但是導入中文數據時就遇到了錯誤
解決方法
將txt文件保存為utf-8格式:打開txt文件 -> 文件 -> 另存為 -> 編碼選擇utf-8
外鍵約束
以 為PROJECT的DNO屬性添加DEPARTMENT表的DNO外鍵為例
- 建表時添加
在CREAT TABLE語句括號內添加FOREIGN KEY(DNO) REFERENCES DEPARTMENT(DNO)
- 建表后添加
ALTER TABLE PROJECT ADD CONSTRAINT FOREIGN KEY(MGRSSN) REFERENCES DEPARTMENT(DNO);
- 刪除外鍵約束
ALTER TABLE table_name DROP FOREIGN KEY constraint_name
其中約束名(constraint_name)通過命令SHOW CREAT TABLE table_name
查看
C/C++相關
簡單的連接MySQL的程序:
#include <stdio.h>
#include <mysql.h>
int main(int argc, char **argv)
{
MYSQL mysql_conn; /* Connection handle */
if (mysql_init(&mysql_conn) != NULL)
{
printf("Init succeeds!\n");
}
else
{
printf("Init fails!\n");
}
return 0;
}
編譯命令:gcc mysql.c -o mysql.exe -I D:/mysql/include -L D:/mysql/lib -l libmysql
-I
后是頭文件的位置
-L
后是庫文件的位置
-l
后是庫名,用來指定程序要鏈接的庫,不加上可能會遇到錯誤:undefined reference to mysql_init
編譯成功以后,若直接在cmd上運行,會提示由于找不到libmysql.dll,無法繼續執行代碼,若在PowerShell上運行沒有提示但程序不能正常運行
需要從MySQL安裝目錄下lib文件夾里面的libmysql.lib
和bin文件夾里面的libeay32.dll
兩個文件復制到項目文件夾中。
若只復制libmysql.lib
,在cmd上運行會提示無法定位序數3283于動態鏈接庫 ..\libmysql.dll 上,在PowerShell上運行沒有提示但程序不能正常運行,在Git Bash上可以正常運行