peilinqian commented on issue #22058:
URL: 
https://github.com/apache/shardingsphere/issues/22058#issuecomment-1310170772

   > Hi @peilinqian Thanks for your feedback, and I have reproduced the problem 
from master branch.
   > 
   > We get this error message because a single table already exists in the 
resource registered, and after creating the `READWRITE_SPLITTING RULE`, the 
single table will use the aggregate data source `readwrite_ds`. Therefore, if 
there is no table in the registered resource, this `readwrite_ds` can be 
dropped.
   > 
   > ### The latest reproduction process:
   > ```sql
   > REGISTER STORAGE UNIT write_ds (
   >     HOST="127.0.0.1",
   >     PORT=3306,
   >     DB="demo_write_ds",
   >     USER="root",
   >     PASSWORD="123456"
   > ), read_ds (
   >     HOST="127.0.0.1",
   >     PORT=3306,
   >     DB="demo_read_ds",
   >     USER="root",
   >     PASSWORD="123456"
   > );
   > 
   > SET DEFAULT SINGLE TABLE STORAGE UNIT = write_ds;
   > 
   > CREATE TABLE `t_order` (
   >   `order_id` bigint(20) NOT NULL AUTO_INCREMENT,
   >   `user_id` int(11) NOT NULL,
   >   `status` varchar(50) DEFAULT NULL,
   >   PRIMARY KEY (`order_id`)
   > );
   > 
   > CREATE READWRITE_SPLITTING RULE group_0 (
   > WRITE_STORAGE_UNIT=write_ds,
   > READ_STORAGE_UNITS(read_ds),
   > TYPE(NAME="random")
   > );
   > 
   > DROP READWRITE_SPLITTING RULE group_0;
   > ```
   > 
   > Error: Readwrite splitting rules `[group_0]` in database `xxx` are still 
in used.
   > 
   > ### Analyze
   > I would say that this restriction is actually correct. Consider a 
scenario: When `write_ds` and `read_ds` are a set of primary-replica cluster, 
when there is already a table, dropping the rule may cause `INSERT SQL` to be 
routed to `read_ds`, which will cause serious errors.
   > 
   > Therefore, if there is already a single table in the logic database that 
uses `readwrite_ds`, dropping rule is not allowed.
   > 
   > So, what are the scenarios where you need to drop the rules when using the 
primary-replica cluster?
   
   Thank U, I already understand the reason for my problem。
   So the only scenario can't drop the rules is when there is already a table 
in real database ?


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to