sqlmode
⑴ 怎麼設置mysql 為ansi模式
細化解析;在 ANSI 模式下運行MySQL
你可以使用「--ansi」啟動選項,要求MySQLd使用ANSI模式。
在ANSI模式下運行伺服器與使用該選項啟動它的效果一樣(在一行上指定「--sql_mode」值):
--transaction-isolation=SERIALIZABLE
--sql-mode=REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,
IGNORE_SPACE
在MySQL4.1中,能夠用下述兩條語句實現相同的效果(在一行上指定「sql_mode」值):
SET GLOBAL TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET GLOBAL sql_mode = 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,
IGNORE_SPACE';
在MySQL 4.1.1中,也能用下述語句設置sql_mode選項:
SET GLOBAL sql_mode='ansi';
在本例中,將sql_mode變數的值設置為與ANSI模式相關的所有選項。你可以檢查其結果,如下所示:
mysql> SET GLOBAL sql_mode='ansi';
mysql> SELECT @@global.sql_mode;
-> 'REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,
IGNORE_SPACE,ANSI';
⑵ 用的寶塔面板,怎麼修改資料庫的sql-mode STRICT_TRANS_TABLES
很簡單了,只需要三個步驟
找到你的的軟體管理地方,再找到配置修改哪個地方,找到第28行,把它注釋掉就等於關閉了
#sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
⑶ SQL執行錯誤#1193從資料庫Unknown system variable 'SQL_MODE'
可能是許可權不足,不能創建表格,或者:當你試圖在mysql中創建一個外鍵的時候,這個出錯會經常發生,這是非常令人沮喪的。像這種不能創建一個.frm
文件的報錯好像暗示著操作系統的文件的許可權錯誤或者其它原因,但實際上,這些都不是的,事實上,這個mysql報錯已經被報告是一個mysql本身的bug並出現在mysql
開發者列表當中很多年了,然而這似乎又是一種誤導。在很多實例中,這種錯誤的發生都是因為mysql一直以來都不能很好的支持的關系的問題,
更不幸的是它也並沒有指明到底是哪一個問題會導致上面那種錯誤,下面我把導致這個可怕
的150錯誤的常見原因列出來了,並且我以可能性的大小作了排序已知的原因:1,兩個欄位的類型或者大小不嚴格匹配,例如,如果一個是INT(10),
那麼外鍵也必須設置成INT(10),
而不是
INT(11)
也不能是TINYINT.
你得使用
SHOW
命令來查看欄位的大小,因為一些查詢瀏覽器有時候把
int(10)
和int(11)都顯示為integer。另外,你還必須確定兩個欄位是否一個為
SIGNED,而另一個又是UNSIGNED,
這兩欄位必須嚴格地一致匹配。2,
你試圖引用的其中一個外鍵沒有建立起索引,或者不是一個primary
key
,
如果其中一個不是primary
key
的放,你必須為它創建一個索引。3,
外鍵的名字是一個已經存在的一個鍵值了,這個時候,你應該檢查你的資料庫以確保外健名字是唯一的,或者你在鍵名後面加上幾個隨機的字元以測試是否是這個原因。4,
其中一個或者兩個表是MyISAM引擎的表,若想要使用外鍵約束,必須是InnoDB引擎,(實際上,如果兩個表都是MyISAM
引擎的,這個錯誤根本不會發生,但也不會產生外鍵),你可以通過查詢瀏覽器來設置表的引擎類型5,
你可能設置了ON
DELETE
SET
NULL,
但是相關的鍵的欄位又設置成了NOTS
NULL
值。你可能通過修改cascade
的屬性值或者把欄位屬性設置成
allow
null
來搞定這個bug.6,
請確定你的Charset
和
Collate
選項在表級和欄位級上的一致7,
你可能設置為外鍵設置了一個默認值,如
default=08,
在這個關系裡面,其中的一個欄位是一個混合鍵值中的一個,它沒有自己獨立的索引,這時,你必須為它創建一個獨立的索引。9,
ALTER
聲明中有語法錯誤1、外鍵的引用類型不一樣,主鍵是int外鍵是char2、找不到主表中
引用的列3、主鍵和外鍵的字元編碼不一致4.還有要建立外鍵的話,要先建立索引。沒有建立索引也會出錯。我的問題解決方案是在sql後面加上了如下句話,ok!成功導入腳本ENGINE=INNODB
DEFAULT
CHARSET=utf8;charset對應的換成你的主鍵表的字元集!