Time of Update: 2017-01-18
在MySQL中,使用auto_increment類型的id欄位作為表的主鍵,並用它作為其他表的外鍵,形成“主從表結構”,這是資料庫設計中常見的用法。但是在具體產生id的時候,我們的操作順序一般是:先在主表中插入記錄,然後獲得自動產生的id,以它為基礎插入從表的記錄。這裡面有個困難,就是插入主表記錄後,如何獲得它對應的id。通常的做法,是通過“select max(id) from tablename”的做法,但是顯然這種做法需要考慮並發的情況,需要在事務中對主表加以“X鎖“,待獲得max(id)
Time of Update: 2017-01-18
myisam_max_[extra]_sort_file_size足夠大 delay_key_write減少io,提高寫入效能 bulk_insert_buffer_size concurrent_insert 設定為2 read_rnd_buffer_size random scan 使用 read_buffer_size 順序掃描表使用 key cache 的三種方式 key cache 預先載入 SET GLOBAL hot_cache.key_buffer_size=16m SET
Time of Update: 2017-01-18
processlist命令的輸出結果顯示了有哪些線程在運行,可以協助識別出有問題的查詢語句,兩種方式使用這個命令。1. 進入mysql/bin目錄下輸入mysqladmin processlist;2. 啟動mysql,輸入show
Time of Update: 2017-01-18
在d:盤根目錄下面存放備份資料庫,備份資料庫名字為backup20070713.sql(20070713.sql為備份日期) 備份資料庫: mysqldump -uroot -p123456 database_name>d:/backup20070713.sql 恢複資料庫: 刪除原有資料庫,建立資料庫,把備份資料庫匯入。 mysqladmin -uroot -p123456 drop database_name mysqladmin -uroot -p123456
Time of Update: 2017-01-18
LOCATE(substr,str) POSITION(substr IN str) 返回子串 substr 在字串 str 中第一次出現的位置。如果子串 substr 在 str 中不存在,傳回值為 0: mysql> SELECT LOCATE('bar', ‘foobarbar'); -> 4 mysql> SELECT LOCATE('xbar', ‘foobar'); -> 0 這個函數是多位元組安全的。在 MySQL 3.23 中,這個函數是字母大小寫敏感的,
Time of Update: 2017-01-18
因為硬碟滿了,mysql啟動不起來了。 登入上去看了一下,發現原因。 刪除mysql的記錄檔,重啟mysql發現錯誤:Starting MySQL.Manager of pid-file quit without updating file.[FAILED] 網上有不少這個原因的解釋,但是都不是我想說的。我要說的原因其實很白癡:data/mysql-bin.index沒有刪除,data/mysql-bin.index是存放記錄檔索引的檔案,只刪除了記錄檔而沒有對日誌的索引檔案做處理顯然是不行的。
Time of Update: 2017-01-18
這些問題可能導致資料值的改變。一般而言,上述問題可能在你使用非二進位串資料類型(如char,varchar,text等資料類型)的情況下發生。 AES_ENCRYPT()和AES_DECRYPT() AES_ENCRYPT()和AES_DECRYPT()可以加密/解密使用官方AES演算法的資料。該演算法使用128位密鑰來編碼,但使用者可以將其擴充到256位。MySQL選用128位密鑰,因為這樣演算法實現更快,而且對大多數使用者而言它也足夠安全了。 AES_ENCRYPT(str,key_str)
Time of Update: 2017-01-18
1.建立主鍵文法 ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名); 2.建立外鍵文法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[約束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ; 3.使用組合主鍵
Time of Update: 2017-01-18
三種解決方案: 1、改表法。可能是你的帳號不允許從遠程登陸,只能在localhost。這個時候只要在localhost的那台電腦,登入mysql後,更改 "mysql" 資料庫裡的 "user" 表裡的 "host" 項,從"localhost"改稱"%" mysql -u root -pvmware mysql>use mysql; mysql>update user set host = '%' where user = 'root';
Time of Update: 2017-01-18
sql 複製代碼 代碼如下:INSERT INTO `table` ('id','aa','bb','cc') SELECT 'id','aa','bb','cc' FROM `table` (WHERE .....)Tips:複製代碼 代碼如下:/** * 複製新紀錄的時候,可能要更新id或者是部分資料(假設id自增加的情況) * * text_aa 為固定值 ,可在指令碼調用中賦變數值 如($aa) * 注意'text_aa' 與 `cc` 的區別 ,一個是資料,一個是欄位 **/
Time of Update: 2017-01-18
一開始匯入失敗了。產生的SQL語句不正確。SQL 查詢: INSERT INTO `cc_present`.`c_city` (`A`, `B`, `C`) VALUES (NULL, 1, '市轄區')...像這樣列名稱變為A,B,C了。問題出在兩個地方。1.需要在Excel檔案中加入列名稱 另外注意Excel的Sheet名應該為表的名稱,像下面這樣。2.需要勾選忽略首行選項當然表名和欄位名要和mySQL的定義一致,同時資料的類型和長度要沒有問題,才能匯入成功。
Time of Update: 2017-01-18
當我們去設計資料庫表結構,對操作資料庫時(尤其是查表時的SQL語句),我們都需要注意資料操作的效能。這裡,我們不會講過多的SQL語句的最佳化,而只是針對MySQL這一Web應用最多的資料庫。希望下面的這些最佳化技巧對你有用。 1. 為查詢快取最佳化你的查詢 大多數的MySQL伺服器都開啟了查詢快取。這是提高性最有效方法之一,而且這是被MySQL的資料庫引擎處理的。當有很多相同的查詢被執行了多次的時候,這些查詢結果會被放到一個緩衝中,這樣,後續的相同的查詢就不用動作表而直接存取緩衝結果了。
Time of Update: 2017-01-18
1、MySQL常用命令 create database name; 建立資料庫 use databasename; 選擇資料庫 drop database name 直接刪除資料庫,不提醒 show tables; 顯示表 describe tablename; 表的詳細描述 select 中加上distinct去除重複欄位 mysqladmin drop databasename 刪除資料庫前,有提示。 顯示當前mysql版本和當前日期 select
Time of Update: 2017-01-18
昨天對其配置了一天,其配置為Jena 2.4.0,MySQL資料庫版本為5.1.42-community,JDK版本為1.6.0,MySQLdriver為mysql-connector-java-3.1.14; 並按照網路上的資源編寫了一個例子,結果出現了一個問題,程式在debug到 使用資料庫連接參數建立一個模型製造器 ModelMaker maker = ModelFactory.createModelRDBMaker(conn); 建立一個預設模型,命名為 MyOntology
Time of Update: 2017-01-18
MySQL隨機查詢資料 以前在群裡討論過這個問題,比較的有意思.MySQLl的文法真好玩.他們原來都想用PHP的實現隨機,但取出多條好像要進行兩次以上查詢.翻了手冊,找到了下面這個語句,可以完成任務了。 複製代碼 代碼如下: SELECT * FROM table_name ORDER BY rand() LIMIT 5; MySQL的rand()函數在手冊裡是這麼說的: RAND() RAND(N) 返回在範圍0到1.0內的隨機浮點值。如果一個整數參數N被指定,它被用作種子值。
Time of Update: 2017-01-18
一、概述 事件調度器是在 MySQL 5.1 中新增的另一個特色功能,可以作為定時任務調度器,取代部分原先只能用作業系統任務調度器才能完成的定時功>能。例如,Linux 中的 crontabe 只能精確到每分鐘執行一次,而 MySQL 的事件調度器則可以實現每秒鐘執行一個任務,這在一些對即時性要>求較高的環境下就非常實用了。
Time of Update: 2017-01-18
複製代碼 代碼如下: SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...] SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...] UNION 用於把來自許多SELECT語句的結果組合到一個結果集合中。 (如果你要將多個表的查詢結果進行合并輸出比如說
Time of Update: 2017-01-18
1.查看設定檔: skip-networking #注釋掉 因為它是屏蔽掉一切TCP/IP串連 bind-address = 127.0.0.1 #它和上一個選項是異曲同工,要想遠端連線,也得注釋掉 2.如果以上工作都做過還是出現: ERROR 2003 (HY000): Can't connect to MySQL server on '*.*.*.*' (113),那就得考慮防火牆的問題了,關掉防火牆/etc/rc.d/init.d/iptables stop 修改完後需要 restart
Time of Update: 2017-01-18
於是: 1、在主庫中建立一個臨時庫,將需要匯入的表檔案複製過來 2、執行 create database tmpdb; create table tmptable; cp mysql_date_file master_data_file //shell command 複製資料表檔案到master data_dir下 insert into master.tmptable select * from tmpdb.tmptable; 執行完後,主庫中資料匯入正常 再看slave status
Time of Update: 2017-01-18
DATE_ADD(date,INTERVAL expr type) DATE_SUB(date,INTERVAL expr type) 這些函數執行日期運算。 date 是一個 DATETIME 或DATE值,用來指定起始時間。 expr 是一個運算式,用來指定從起始日期添加或減去的時間間隔值。 Expr是一個字串;對於負值的時間間隔,它可以以一個 ‘-'開頭。 type 為關鍵詞,它指示了運算式被解釋的方式。 關鍵詞INTERVA及 type 分類符均不區分大小寫。