programing

SQL: SELECT WHERE(VARCHAR 열) Moodle이 있는 행을 찾을 수 없습니다.오류 "데이터베이스 테이블 external_functions에서 데이터 레코드를 찾을 수 없습니다."

kingscode 2022. 11. 8. 21:29
반응형

SQL: SELECT WHERE(VARCHAR 열) Moodle이 있는 행을 찾을 수 없습니다.오류 "데이터베이스 테이블 external_functions에서 데이터 레코드를 찾을 수 없습니다."

왜 이런 일이 일어나는지 아십니까?

id=76인 열에 'name'에 정확히 해당 문자열이 포함되어 있더라도 'name' 열의 'core_course_get_course_content_content'를 포함하는 행을 찾을 수 없습니다.동일한 문자열로 행을 업데이트하려고 하면 행이 업데이트되지 않습니다('일치된 행: 1 변경됨: 0 경고: 0').

MariaDB [moodle]> SELECT name FROM mdl_external_functions WHERE id = 76;
+--------------------------------------+
| name                                 |
+--------------------------------------+
| core_course_get_course_content_items |
+--------------------------------------+
1 row in set (0.000 sec)

MariaDB [moodle]> SELECT * FROM mdl_external_functions WHERE name = 'core_course_get_course_content_items';
Empty set (0.000 sec)

MariaDB [moodle]> UPDATE mdl_external_functions SET name = 'core_course_get_course_content_items' WHERE id = 76;
Query OK, 0 rows affected (0.000 sec)
Rows matched: 1  Changed: 0  Warnings: 0

테이블

CREATE TABLE `mdl_external_functions` (
  `id` bigint(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(200) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `classname` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `methodname` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `classpath` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `component` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '',
  `capabilities` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `services` varchar(1333) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `mdl_extefunc_nam_uix` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=627 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci

양쪽을 HEX와 비교:

MariaDB [moodle]> SELECT HEX(name) FROM mdl_external_functions WHERE id = 76;
+--------------------------------------------------------------------------+
| HEX(name)                                                                |
+--------------------------------------------------------------------------+
| 636F72655F636F757273655F6765745F636F757273655F636F6E74656E745F6974656D73 |
+--------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [moodle]> SELECT HEX('core_course_get_course_content_items');
+--------------------------------------------------------------------------+
| HEX('core_course_get_course_content_items')                              |
+--------------------------------------------------------------------------+
| 636F72655F636F757273655F6765745F636F757273655F636F6E74656E745F6974656D73 |
+--------------------------------------------------------------------------+
1 row in set (0.000 sec)

Moodle 오류 스크린샷:

부탁한다

대답

Moodle에서 Log Level을 Developer로 설정한 후 다음 메시지가 나타납니다.

error            : Can't find data record in database table external_functions.
errorcode        : invalidrecord
stacktrace       : * line 1646 of /lib/dml/moodle_database.php: dml_missing_record_exception thrown
                   * line 1622 of /lib/dml/moodle_database.php: call to moodle_database->get_record_select()
                   * line 73 of /lib/externallib.php: call to moodle_database->get_record()
                   * line 196 of /lib/externallib.php: call to external_api::external_function_info()
                   * line 81 of /lib/ajax/service.php: call to external_api::call_external_function()

debuginfo        : SELECT * FROM {external_functions} WHERE name = ?
                   [array (
                     0 => 'core_course_get_course_content_items',
                   )]
                   Error code: invalidrecord

아마 최선은 아닐지도 모르지만, 나는 단지 다음과 같이 했고, 지금은 효과가 있다.

MariaDB [moodle]> UPDATE mdl_external_functions SET name = 'abc' WHERE id = 76;
Query OK, 1 row affected (0.014 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB [moodle]> UPDATE mdl_external_functions SET name = 'core_course_get_course_content_items' WHERE id = 76;
Query OK, 1 row affected (0.001 sec)
Rows matched: 1  Changed: 1  Warnings: 0

언급URL : https://stackoverflow.com/questions/70986551/sqlcant-find-row-with-select-where-varchar-column-moodle-error-cant-find

반응형