本節描述 Sakila 範例資料庫各版本中所做的變更。
修正了 MySQL Bug #112131:使 film_text.film_id 欄位為無號整數,以符合其他 film_id 的定義。
film_list 和 nicer_but_slower_film_list 檢視表不會傳回沒有演員的影片。
修正了 MySQL Bug #106951:
city和country欄位中缺少了帶重音符號的字元;它們的值已使用world資料庫更新。此外,也缺少了銳音符號字元本身。修正了 MySQL Bug #107158:移除了 payment 資料表中 rental_id 值為 Null 的五列。
資料庫物件現在使用
utf8mb4而不是utf8。此變更在 MySQL 5.6 中針對宣告為VARCHAR(255)的film.title欄位造成了Specified key was too long; max key length is 767 bytes錯誤。實際的最大標題長度為 27 個字元,因此將該欄位重新宣告為VARCHAR(128)以避免超過最大索引鍵長度。sakila-schema.sql和sakila-data.sql包含SET NAMES utf8mb4陳述式。sakila-data.sql已從 DOS (CRLF) 行尾轉換為 Unix (LF) 行尾。address.location欄位是一個具有SPATIAL索引的GEOMETRY欄位。從 MySQL 8.0.3 開始,除非索引空間欄位具有SRID屬性,否則會忽略SPATIAL索引。location欄位已變更為針對 MySQL 8.0.3 和更新版本包含SRID 0屬性。staff.password欄位宣告為VARCHAR(40) BINARY。這是在字元欄位宣告中使用BINARY作為指定_bin定序的簡寫,自 MySQL 8.0.17 起已棄用。該欄位已重新宣告為BINARY的簡寫,即VARCHAR(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin。在
rewards_report()預存程序中,min_dollar_amount_purchased參數宣告為DECIMAL(10,2) UNSIGNED。從 MySQL 8.0.17 起,將UNSIGNED與DECIMAL搭配使用已遭棄用。該參數已重新宣告為不含UNSIGNED。film_in_stock()和film_not_in_stock()預存程序使用了FOUND_ROWS()函數,此函數自 MySQL 8.0.17 起已遭棄用。在每個程序中,FOUND_ROWS()查詢已由使用COUNT(*)的查詢取代,其中具有與其相關聯的查詢相同的FROM和WHERE子句。這比使用FOUND_ROWS()更耗費資源,但會產生相同的結果。在 MySQL 5.6.10 之前,
film_text資料表使用MyISAM而非InnoDB,以避免在舊版本中發生資料表建立失敗。(但是,我們仍然建議升級到 MySQL 5.6.10 或更高版本。)MySQL Workbench 的
sakila.mwb檔案已根據上述變更進行更新。
移除了所有
MyISAM參考。film_text資料表及其FULLTEXT定義現在使用InnoDB。如果您使用較舊的 MySQL 伺服器版本 (5.6.10 和更低版本),我們建議您升級 MySQL。如果您無法升級,請將sakila-schema.sqlSQL 檔案中film_text資料表的ENGINE值變更為MyISAM。
-
透過使用 MySQL 版本特定的註解,將
sakila-schema.sql和sakila-spatial-schema.sql合併為單一檔案。從 MySQL 伺服器 5.7.5 開始(當空間索引支援新增至
InnoDB時),空間資料 (例如address.location) 會插入到 sakila 資料庫中。此外,從 MySQL 伺服器 5.6.10 開始使用InnoDB全文搜尋,而之前使用的是MyISAM。
新增了包含具有幾何資料類型的空間資料的 Sakila 範例資料庫的另一個副本。這可作為個別下載使用,並且需要 MySQL 伺服器 5.7.5 或更新版本。若要使用此資料庫,請載入
sakila-spatial-schema.sql檔案,而不是sakila-schema.sql檔案。修改了
nicer_but_slower_film_list和film_list檢視表定義的GROUP BY子句,使其與ONLY_FULL_GROUP_BYSQL 模式相容,此模式從 MySQL 5.7.5 開始預設為啟用。
修正了
upd_film觸發程序定義,使其包含對film_id值的變更。新增了
actor_info檢視表。變更了
inventory_held_by_customer函數的錯誤處理常式。函數現在針對NOT FOUND具有退出處理常式,而不是較為隱晦的1329。在結構描述和資料檔案中新增了新 BSD 授權的範本。
將
READS SQL DATA新增到適當的預存程序和函數中,以支援在 MySQL 5.1 上載入。修正了
rewards_report程序中的日期範圍問題(感謝 Goplat)。
修正了
sales_by_store檢視表中的錯誤,該錯誤導致每個商店都列出相同的管理員。修正了
inventory_held_by_customer函數中的錯誤,該錯誤導致函數傳回多列。將
rental_date觸發程序移動到sakila-data.sql檔案,以防止其干擾資料載入。
新增了
film_in_stock預存程序。新增了
film_not_in_stock預存程序。新增了
inventory_help_by_customer預存函數。新增了
inventory__in_stock預存函數。最佳化了用於載入的資料檔案(多列
INSERT陳述式、交易)。(感謝 Giuseppe)修正了
payment資料表載入指令碼中的錯誤,該錯誤導致付款金額無限增加。
新增了 Jay Pipes 提交的
sales_by_store和sales_by_film_category檢視表。新增了 Jay Pipes 提交的
rewards_report預存程序。新增了
get_customer_balance預存程序。新增了
sakila-data.sql檔案,以便將資料載入到範例資料庫中。
將
address.district變更為VARCHAR(20)。將
customer.first_name變更為VARCHAR(45)。將
customer.last_name變更為VARCHAR(45)。將
customer.email變更為VARCHAR(50)。新增了
payment.rental_id欄位(一個INT NULL欄位)。為
payment.rental_id新增了到rental.rental_id的外部索引鍵。新增了
rental.rental_id、INT Auto_Increment,使其成為代理主索引鍵,舊的主索引鍵變更為UNIQUE索引鍵。
所有資料表都有具有傳統行為的
last_updateTIMESTAMP欄位 (DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP)。actor_id現在是SMALLINT。address_id現在是SMALLINT。category_id現在是TINYINT。city_id現在是SMALLINT。country_id現在是SMALLINT。customer_id現在是SMALLINT。customer資料表的first_name和last_name現在是CHAR而不是VARCHAR。customer資料表現在具有email CHAR(50)。customer資料表上的create_date現在是DATETIME(以容納last_update TIMESTAMP)。customer資料表有一個新的ON INSERT觸發程序,用於強制將create_date欄位設定為NOW()。film_id現在是SMALLINT。film.description現在具有DEFAULT NULL。film.release_year新增,類型為YEAR。新增
film.language_id和film.original_language_id,以及language資料表。適用於可能帶有字幕的外語電影。original_language_id可以為NULL,而language_id則為NOT NULL。film.length現在為SMALLINT。移除
film.category_id欄位。新增資料表:
film_category;允許每部電影有多個類別。移除
film_text.category_id欄位。inventory_id現在為MEDIUMINT。payment_id現在為SMALLINT。payment.payment_date現在為DATETIME。在
payment資料表中新增觸發器,以強制在INSERT時將payment_date設定為NOW()。rental.rent_date現在為rental.rental_date,並且現在為DATETIME。在
rental資料表中新增觸發器,以強制在INSERT時將rental_date設定為NOW()。staff_id現在為TINYINT。新增
staff.email(VARCHAR(50))。新增
staff.username(VARCHAR(16))。store_id現在為TINYINT。更新
film_list視圖以處理新的film_category資料表。更新
nicer_but_slower_film_list視圖以處理新的film_category資料表。