mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
NEW Allow setting sql_mode via config (#9721)
This commit is contained in:
parent
8c0ff67c55
commit
f00f64120d
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
title: Server Requirements
|
title: Server Requirements
|
||||||
icon: server
|
icon: server
|
||||||
summary: What you will need to run Silverstripe CMS on a web server
|
summary: What you will need to run Silverstripe CMS on a web server
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
@ -27,7 +27,11 @@ Use [phpinfo()](http://php.net/manual/en/function.phpinfo.php) to inspect your c
|
|||||||
* PostgreSQL ([third party module](https://addons.silverstripe.org/add-ons/silverstripe/postgresql), community supported)
|
* PostgreSQL ([third party module](https://addons.silverstripe.org/add-ons/silverstripe/postgresql), community supported)
|
||||||
* SQL Server ([third party module](https://addons.silverstripe.org/add-ons/silverstripe/mssql), community supported)
|
* SQL Server ([third party module](https://addons.silverstripe.org/add-ons/silverstripe/mssql), community supported)
|
||||||
* SQLite ([third party module](https://addons.silverstripe.org/add-ons/silverstripe/sqlite3), community supported)
|
* SQLite ([third party module](https://addons.silverstripe.org/add-ons/silverstripe/sqlite3), community supported)
|
||||||
|
|
||||||
|
### Connection mode (sql_mode) when using MySQL server >=5.7.5
|
||||||
|
|
||||||
|
In MySQL versions >=5.7.5, the `ANSI` sql_mode setting behaves differently and includes the `ONLY_FULL_GROUP_BY` setting. It is generally recommended to leave this setting as-is because it results in deterministic SQL. However, for some advanced cases, the sql_mode can be configured on the database connection via the configuration API (see `MySQLDatabase::$sql_mode` for more details.) This setting is only available in Silverstripe CMS 4.7 and later.
|
||||||
|
|
||||||
## Webserver Configuration
|
## Webserver Configuration
|
||||||
|
|
||||||
### Overview
|
### Overview
|
||||||
@ -138,14 +142,14 @@ See [silverstripe/vendor-plugin](https://github.com/silverstripe/vendor-plugin)
|
|||||||
The default installation includes [silverstripe/errorpage](https://addons.silverstripe.org/add-ons/silverstripe/errorpage),
|
The default installation includes [silverstripe/errorpage](https://addons.silverstripe.org/add-ons/silverstripe/errorpage),
|
||||||
which generates static error pages that bypass PHP execution when those pages are published in the CMS.
|
which generates static error pages that bypass PHP execution when those pages are published in the CMS.
|
||||||
Once published, the static files are located in `public/assets/error-404.html` and `public/assets/error-500.html`.
|
Once published, the static files are located in `public/assets/error-404.html` and `public/assets/error-500.html`.
|
||||||
The default `public/.htaccess` file is configured to have Apache serve those pages based on their HTTP status code.
|
The default `public/.htaccess` file is configured to have Apache serve those pages based on their HTTP status code.
|
||||||
|
|
||||||
### Other webservers (Nginx, IIS, Lighttpd)
|
### Other webservers (Nginx, IIS, Lighttpd)
|
||||||
|
|
||||||
Serving through webservers other than Apache requires more manual configuration,
|
Serving through webservers other than Apache requires more manual configuration,
|
||||||
since the defaults configured through `.htaccess` don't apply.
|
since the defaults configured through `.htaccess` don't apply.
|
||||||
Please apply the considerations above to your webserver to ensure a secure hosting environment.
|
Please apply the considerations above to your webserver to ensure a secure hosting environment.
|
||||||
In particular, configure protected assets correctly to avoid exposing draft or protected files uploaded through the CMS.
|
In particular, configure protected assets correctly to avoid exposing draft or protected files uploaded through the CMS.
|
||||||
|
|
||||||
There are various community supported installation instructions for different environments.
|
There are various community supported installation instructions for different environments.
|
||||||
Nginx is a popular choice, see [Nginx webserver configuration](https://forum.silverstripe.org/t/nginx-webserver-configuration/2246).
|
Nginx is a popular choice, see [Nginx webserver configuration](https://forum.silverstripe.org/t/nginx-webserver-configuration/2246).
|
||||||
@ -182,9 +186,9 @@ SilverStripe's PHP support has changed over time and if you are looking to upgra
|
|||||||
SilverStripe CMS supports the following web browsers:
|
SilverStripe CMS supports the following web browsers:
|
||||||
* Google Chrome
|
* Google Chrome
|
||||||
* Internet Explorer 11
|
* Internet Explorer 11
|
||||||
* Microsoft Edge
|
* Microsoft Edge
|
||||||
* Mozilla Firefox
|
* Mozilla Firefox
|
||||||
|
|
||||||
We aim to provide satisfactory experiences in Apple Safari. SilverStripe CMS works well across Windows, Linux, and Mac operating systems.
|
We aim to provide satisfactory experiences in Apple Safari. SilverStripe CMS works well across Windows, Linux, and Mac operating systems.
|
||||||
|
|
||||||
## End user requirements
|
## End user requirements
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
- [Experimental support for PHP 8](#experimental-support-for-php-8)
|
- [Experimental support for PHP 8](#experimental-support-for-php-8)
|
||||||
- [Support for Symfony 4 Components](#support-for-symfony-4-components)
|
- [Support for Symfony 4 Components](#support-for-symfony-4-components)
|
||||||
- [Default MySQL collation updated](#default-mysql-collation-updated)
|
- [Default MySQL collation updated](#default-mysql-collation-updated)
|
||||||
|
- [MySQL connection mode configurable](#mysql-connection-mode-now-configurable)
|
||||||
- [Flysystem dependency shifted](#flysystem-dependency-shifted)
|
- [Flysystem dependency shifted](#flysystem-dependency-shifted)
|
||||||
|
|
||||||
## New features
|
## New features
|
||||||
@ -59,6 +60,10 @@ You can rectify this by upgrading MySQL, enabling the `innodb_large_prefix` sett
|
|||||||
reducing the size of affected fields. If none of these solutions are currently suitable, you can
|
reducing the size of affected fields. If none of these solutions are currently suitable, you can
|
||||||
remove the new collation configuration to default back to the previous default collation.
|
remove the new collation configuration to default back to the previous default collation.
|
||||||
|
|
||||||
|
### MySQL connection mode now configurable
|
||||||
|
|
||||||
|
In MySQL versions >=5.7.5, the `ANSI` sql_mode setting behaves differently and includes the `ONLY_FULL_GROUP_BY` setting. It is generally recommended to leave this setting as-is because it results in deterministic SQL. However, for some advanced cases, the sql_mode can now be configured on the database connection via the configuration API (see `MySQLDatabase::$sql_mode` for more details.)
|
||||||
|
|
||||||
### Flysystem dependency shifted
|
### Flysystem dependency shifted
|
||||||
|
|
||||||
Previously the Flysystem package was pulled in via the `silverstripe/framework` module, but only
|
Previously the Flysystem package was pulled in via the `silverstripe/framework` module, but only
|
||||||
@ -71,4 +76,3 @@ An edgecase exists where a project can update to `silverstripe/framework 4.7.0`
|
|||||||
`silverstripe/assets 1.6.x`, and lose the Flysystem dependency entirely. The best way to avoid this
|
`silverstripe/assets 1.6.x`, and lose the Flysystem dependency entirely. The best way to avoid this
|
||||||
is by ensuring you update all core modules to the new minor release at once, ideally through a core
|
is by ensuring you update all core modules to the new minor release at once, ideally through a core
|
||||||
recipe like `silverstripe/recipe-core`.
|
recipe like `silverstripe/recipe-core`.
|
||||||
|
|
||||||
|
@ -49,6 +49,15 @@ class MySQLDatabase extends Database implements TransactionManager
|
|||||||
*/
|
*/
|
||||||
private static $charset = 'utf8';
|
private static $charset = 'utf8';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SQL Mode used on connections to MySQL. Defaults to ANSI. For basic ORM
|
||||||
|
* compatibility, this setting must always include ANSI or ANSI_QUOTES.
|
||||||
|
*
|
||||||
|
* @config
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
private static $sql_mode = 'ANSI';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache for getTransactionManager()
|
* Cache for getTransactionManager()
|
||||||
*
|
*
|
||||||
@ -84,8 +93,8 @@ class MySQLDatabase extends Database implements TransactionManager
|
|||||||
// Notify connector of parameters
|
// Notify connector of parameters
|
||||||
$this->connector->connect($parameters);
|
$this->connector->connect($parameters);
|
||||||
|
|
||||||
// This is important!
|
// Set sql_mode
|
||||||
$this->setSQLMode('ANSI');
|
$this->setSQLMode(static::config()->get('sql_mode'));
|
||||||
|
|
||||||
if (isset($parameters['timezone'])) {
|
if (isset($parameters['timezone'])) {
|
||||||
$this->selectTimezone($parameters['timezone']);
|
$this->selectTimezone($parameters['timezone']);
|
||||||
|
Loading…
Reference in New Issue
Block a user