database.php 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241
  1. <?php
  2. use Illuminate\Support\Str;
  3. return [
  4. /*
  5. |--------------------------------------------------------------------------
  6. | Default Database Connection Name
  7. |--------------------------------------------------------------------------
  8. |
  9. | Here you may specify which of the database connections below you wish
  10. | to use as your default connection for all database operations. This is
  11. | the connection which will be utilized unless another connection
  12. | is explicitly specified when you execute a query / statement.
  13. |
  14. */
  15. 'default' => env('DB_CONNECTION', 'mysql'),
  16. /*
  17. |--------------------------------------------------------------------------
  18. | Database Connections
  19. |--------------------------------------------------------------------------
  20. |
  21. | Below are all of the database connections defined for your application.
  22. | An example configuration is provided for each database system which
  23. | is supported by Laravel. You're free to add / remove connections.
  24. |
  25. */
  26. 'connections' => [
  27. 'sqlite' => [
  28. 'driver' => 'sqlite',
  29. 'url' => env('DB_URL'),
  30. 'database' => env('DB_DATABASE', database_path('database.sqlite')),
  31. 'prefix' => '',
  32. 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true),
  33. 'busy_timeout' => null,
  34. 'journal_mode' => null,
  35. 'synchronous' => null,
  36. 'transaction_mode' => 'DEFERRED',
  37. ],
  38. 'mysql' => [
  39. 'driver' => 'mysql',
  40. 'url' => env('DB_URL'),
  41. 'host' => env('DB_HOST', '127.0.0.1'),
  42. 'port' => env('DB_PORT', '3306'),
  43. 'database' => env('DB_DATABASE', 'laravel'),
  44. 'username' => env('DB_USERNAME', 'root'),
  45. 'password' => env('DB_PASSWORD', ''),
  46. 'unix_socket' => env('DB_SOCKET', ''),
  47. 'charset' => env('DB_CHARSET', 'utf8mb4'),
  48. 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
  49. 'prefix' => '',
  50. 'prefix_indexes' => true,
  51. 'strict' => true,
  52. 'engine' => null,
  53. 'options' => extension_loaded('pdo_mysql') ? array_filter([
  54. PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
  55. PDO::MYSQL_ATTR_INIT_COMMAND => "SET sql_mode='" . env('MYSQL_SQL_MODE', 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION') . "'",
  56. PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
  57. PDO::ATTR_TIMEOUT => env('DB_QUERY_TIMEOUT', 30),
  58. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  59. PDO::MYSQL_ATTR_MULTI_STATEMENTS => false,
  60. PDO::ATTR_EMULATE_PREPARES => false,
  61. ]) : [],
  62. ],
  63. // 远程MySQL连接配置(向后兼容)
  64. 'remote_mysql' => [
  65. 'driver' => 'mysql',
  66. 'url' => env('DB_URL'),
  67. 'host' => env('DB_HOST', '127.0.0.1'),
  68. 'port' => env('DB_PORT', '3306'),
  69. 'database' => env('DB_DATABASE', 'laravel'),
  70. 'username' => env('DB_USERNAME', 'root'),
  71. 'password' => env('DB_PASSWORD', ''),
  72. 'unix_socket' => env('DB_SOCKET', ''),
  73. 'charset' => env('DB_CHARSET', 'utf8mb4'),
  74. 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
  75. 'prefix' => '',
  76. 'prefix_indexes' => true,
  77. 'strict' => true,
  78. 'engine' => null,
  79. 'options' => extension_loaded('pdo_mysql') ? array_filter([
  80. PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
  81. PDO::MYSQL_ATTR_INIT_COMMAND => "SET sql_mode='" . env('MYSQL_SQL_MODE', 'STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION') . "'",
  82. PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true,
  83. PDO::ATTR_TIMEOUT => env('DB_QUERY_TIMEOUT', 30),
  84. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  85. PDO::MYSQL_ATTR_MULTI_STATEMENTS => false,
  86. PDO::ATTR_EMULATE_PREPARES => false,
  87. ]) : [],
  88. ],
  89. 'mariadb' => [
  90. 'driver' => 'mariadb',
  91. 'url' => env('DB_URL'),
  92. 'host' => env('DB_HOST', '127.0.0.1'),
  93. 'port' => env('DB_PORT', '3306'),
  94. 'database' => env('DB_DATABASE', 'laravel'),
  95. 'username' => env('DB_USERNAME', 'root'),
  96. 'password' => env('DB_PASSWORD', ''),
  97. 'unix_socket' => env('DB_SOCKET', ''),
  98. 'charset' => env('DB_CHARSET', 'utf8mb4'),
  99. 'collation' => env('DB_COLLATION', 'utf8mb4_unicode_ci'),
  100. 'prefix' => '',
  101. 'prefix_indexes' => true,
  102. 'strict' => true,
  103. 'engine' => null,
  104. 'options' => extension_loaded('pdo_mysql') ? array_filter([
  105. PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
  106. ]) : [],
  107. ],
  108. 'pgsql' => [
  109. 'driver' => 'pgsql',
  110. 'url' => env('DB_URL'),
  111. 'host' => env('DB_HOST', '127.0.0.1'),
  112. 'port' => env('DB_PORT', '5432'),
  113. 'database' => env('DB_DATABASE', 'laravel'),
  114. 'username' => env('DB_USERNAME', 'root'),
  115. 'password' => env('DB_PASSWORD', ''),
  116. 'charset' => env('DB_CHARSET', 'utf8'),
  117. 'prefix' => '',
  118. 'prefix_indexes' => true,
  119. 'search_path' => 'public',
  120. 'sslmode' => 'prefer',
  121. ],
  122. 'question_bank' => [
  123. 'driver' => 'pgsql',
  124. 'host' => env('QUESTION_BANK_DB_HOST', 'question_bank_pg'),
  125. 'port' => env('QUESTION_BANK_DB_PORT', '5432'),
  126. 'database' => env('QUESTION_BANK_DB_DATABASE', 'question_bank'),
  127. 'username' => env('QUESTION_BANK_DB_USERNAME', 'user'),
  128. 'password' => env('QUESTION_BANK_DB_PASSWORD', 'pass'),
  129. 'charset' => 'utf8',
  130. 'prefix' => '',
  131. 'prefix_indexes' => true,
  132. 'search_path' => 'public',
  133. 'sslmode' => 'prefer',
  134. ],
  135. 'sqlsrv' => [
  136. 'driver' => 'sqlsrv',
  137. 'url' => env('DB_URL'),
  138. 'host' => env('DB_HOST', 'localhost'),
  139. 'port' => env('DB_PORT', '1433'),
  140. 'database' => env('DB_DATABASE', 'laravel'),
  141. 'username' => env('DB_USERNAME', 'root'),
  142. 'password' => env('DB_PASSWORD', ''),
  143. 'charset' => env('DB_CHARSET', 'utf8'),
  144. 'prefix' => '',
  145. 'prefix_indexes' => true,
  146. // 'encrypt' => env('DB_ENCRYPT', 'yes'),
  147. // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'),
  148. ],
  149. ],
  150. /*
  151. |--------------------------------------------------------------------------
  152. | Migration Repository Table
  153. |--------------------------------------------------------------------------
  154. |
  155. | This table keeps track of all the migrations that have already run for
  156. | your application. Using this information, we can determine which of
  157. | the migrations on disk haven't actually been run on the database.
  158. |
  159. */
  160. 'migrations' => [
  161. 'table' => 'migrations',
  162. 'update_date_on_publish' => true,
  163. ],
  164. /*
  165. |--------------------------------------------------------------------------
  166. | Redis Databases
  167. |--------------------------------------------------------------------------
  168. |
  169. | Redis is an open source, fast, and advanced key-value store that also
  170. | provides a richer body of commands than a typical key-value system
  171. | such as Memcached. You may define your connection settings here.
  172. |
  173. */
  174. 'redis' => [
  175. 'client' => env('REDIS_CLIENT', 'phpredis'),
  176. 'options' => [
  177. 'cluster' => env('REDIS_CLUSTER', 'redis'),
  178. 'prefix' => env('REDIS_PREFIX', Str::slug((string) env('APP_NAME', 'laravel')).'-database-'),
  179. 'persistent' => env('REDIS_PERSISTENT', false),
  180. ],
  181. 'default' => [
  182. 'url' => env('REDIS_URL'),
  183. 'host' => env('REDIS_HOST', '127.0.0.1'),
  184. 'username' => env('REDIS_USERNAME'),
  185. 'password' => env('REDIS_PASSWORD'),
  186. 'port' => env('REDIS_PORT', '6379'),
  187. 'database' => env('REDIS_DB', '0'),
  188. 'max_retries' => env('REDIS_MAX_RETRIES', 3),
  189. 'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'),
  190. 'backoff_base' => env('REDIS_BACKOFF_BASE', 100),
  191. 'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000),
  192. ],
  193. 'cache' => [
  194. 'url' => env('REDIS_URL'),
  195. 'host' => env('REDIS_HOST', '127.0.0.1'),
  196. 'username' => env('REDIS_USERNAME'),
  197. 'password' => env('REDIS_PASSWORD'),
  198. 'port' => env('REDIS_PORT', '6379'),
  199. 'database' => env('REDIS_CACHE_DB', '1'),
  200. 'max_retries' => env('REDIS_MAX_RETRIES', 3),
  201. 'backoff_algorithm' => env('REDIS_BACKOFF_ALGORITHM', 'decorrelated_jitter'),
  202. 'backoff_base' => env('REDIS_BACKOFF_BASE', 100),
  203. 'backoff_cap' => env('REDIS_BACKOFF_CAP', 1000),
  204. ],
  205. // 虚拟连接 - 用于 API-only 模型,不执行任何 SQL
  206. 'virtual' => [
  207. 'driver' => 'sqlite',
  208. 'database' => ':memory:',
  209. 'prefix' => '',
  210. 'foreign_key_constraints' => false,
  211. ],
  212. ],
  213. ];