When using a view in a SilverStripe project, whenever the tear down scripts for the Unittests are run the following error occurs:
Couldn't run query:
TRUNCATE "ActivityPoints_view"
Table 'ss_tmpdb2391727.ActivityPoints_view' doesn't exist
This was due to the MySQLSchemaManager::tableList() function assuming that all records in the TABLES were actual tables containing data.
This small tweak fixes the issue by modifying the SQL to filter out views from the list before truncating.
Modified ConfigureFromEnv.php to parse SS_DATABASE_SSL variables (also added a bit of documentation)
Modified PDOConnector.php to implement variables set in ConfigureFromEnv if exists
Modified install files MySQLDatabaseConfigurationHelper and install.php5 to accept and implement SS_DATABASE_SSL variables set in _ss_environment.php
TODO: Add documentation
This patch introduces PHP 7 compatability without breaking semver by adding DBInt
and DBFloat classes, with Int/Float classes that are only loaded into PHP 5 environments
These fixes allow *nix environments to connect to SQL Server using
the dblib PDO driver and the silverstripe mssql module.
- Only set MYSQL_ATTR_INIT_COMMAND when using the mysql driver, this
constant isn't defined if the mysql pdo driver isn't installed
- Supress warnings on getting the server version, attributes aren't
supported by the dblib driver
- Explicitly check for errors on sql exec, checking the return
value isn't reliable for statements with no return value (e.g.
USE database)
The $record argument should NOT be used for object construction, since it bypasses setters.
While the original PHPDoc hints at this (“internal systems”), it doesn’t make it clear enough.
Change isset() to array_key_exists(). In the CMS, if you have a FormField such as 'My value', then you change it to '' (blank), isset() will return false because even though the key exists, the value === null by the time it reaches this point in the code, and isset() return false on null values. array_key_exists will return true with a null value