Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sự cố với thủ tục thực thi trong tệp khởi động mùa xuân schema.sql

Đây là giải pháp mà tôi thấy rằng hoạt động đủ tốt, mặc dù nó không lý tưởng vì bạn phải thay đổi tập lệnh SQL của mình.

Trong application.properties của bạn tệp thay đổi thuộc tính dấu phân tách DataSource:

spring.datasource.separator=^;

Sau đó cập nhật schema.sql của bạn tệp trông như sau:

CREATE PROCEDURE Alter_Table()
BEGIN
 IF NOT EXISTS( SELECT NULL
            FROM INFORMATION_SCHEMA.COLUMNS
           WHERE table_name = 'test_table'
             AND table_schema = 'test'
             AND column_name = 'cc_test_id')  THEN

  alter table test_table add cc_test_id VARCHAR(128) NOT NULL;

END IF;
END ^;

call Alter_Table ^;

Lệnh DELIMITER chỉ hoạt động với máy khách MySQL CLI và Workbench và sẽ không hoạt động để khởi tạo cơ sở dữ liệu Spring Boot. Khi bạn đã xóa các lệnh DELIMITER, Spring Boot vẫn sẽ đưa ra một ngoại lệ vì nó sẽ không hiểu ; các ký tự trong các thủ tục được lưu trữ không phải là các câu lệnh riêng biệt, vì vậy bạn phải thay đổi thuộc tính dấu phân tách nguồn dữ liệu như một giải pháp thay thế.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memcache với MySQL hoạt động như thế nào?

  2. Làm cách nào để cài đặt bộ điều hợp Rails MySQL?

  3. Tại sao MySQL không sử dụng một chỉ mục để so sánh lớn hơn?

  4. MySQL có ghi đè lên một cột có cùng giá trị khi cập nhật không?

  5. Gặp lỗi Các lệnh không đồng bộ, bạn không thể chạy lệnh ngay bây giờ trong khi thực hiện một thủ tục được lưu trữ trong mysql / PHP