本節描述 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.sql
SQL 檔案中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_BY
SQL 模式相容,此模式從 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_update
TIMESTAMP
欄位 (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
資料表。